Je rencontre actuellement des difficultés pour lire les mots séparés par des espaces, ligne par ligne, de stdin
. J'essaie de lire les mots ligne par ligne, et je les imprime simplement en accédant à un tableau de chaînes.Array of Strings issue
Si je suis en train de lire cette phrase:
Enter words: Hi there, how was your day sir?
Je veux juste imprimer la phrase en dessous, comme ceci:
Your sentence: Hi there, how was your day sir?
C'est ce que mon code est jusqu'à présent:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int
main(int argc, char *argv[]) {
char *word = NULL;
char **words = NULL;
int word_size = 1, word_len = 0, word_count = 0;
int words_size = 1, i, ch;
word = (char*)malloc(word_size *sizeof(char));
words = (char **) malloc(words_size*sizeof(char*));
printf("Enter words:\n");
while ((ch = getchar()) != EOF) {
if (isalpha(ch)) {
word_size++;
word = realloc(word, word_size+1);
word[word_len++] = ch;
word[word_len] = '\0';
}
if (isspace(ch)) {
words_size++;
words = realloc(words, words_size+1);
words[word_count] = malloc(strlen(word)+1);
words[word_count++] = word;
word_len = 0;
word_size = 1;
}
if (ch == '\n') {
printf("Your sentence is:\n");
for (i = 0; i < word_count; i++) {
printf("%s ", words[i]);
}
printf("\n");
word_len = 0;
word_size = 1;
words_size = 1;
}
}
return 0;
}
Je ne suis pas sûr pourquoi cela ne fonctionne pas, et pourquoi il imprime le dernier mot. Je sais qu'il y a beaucoup de marketing et de réaffectation, j'essaie juste de mieux les utiliser.
Toute aide serait appréciée
[Ne pas jeter le retour de malloc] (http://stackoverflow.com/questions/605845/do-i-cast-the-result -of-malloc) – Garf365
Vous devriez utiliser 'fgets' pour stocker toute la phrase et ensuite la calculer. – LPs
Ouais @LPs, j'essaie juste de faire la manière brute de la force. Mais ouais 'fgets' rendra cela plus facile. – RoadRunner