2016-12-08 1 views
1

J'ai écrit le programme simple suivant. Il y a un problème présent parce que le programme retourne seulement la dernière ligne. Je ne peux pas comprendre pourquoi cela arrive. Est-ce que quelqu'un pourrait m'aider à comprendre?Programme retourne seulement la dernière ligne

int main(int argc, char *argv[]) { 
    char line[200]; 
    int i=0, k; 

    while(fgets(line, sizeof(line),stdin)){ 
     i++; 
    } 

     for(k=0; k<i; k++){ 
      makeLower(line); 
      printf("%s", line); 
     } 

    return 0; 
} 
+2

Il n'y a une ligne, que vous remplacez constamment. Si vous voulez traiter chaque ligne, faites _inside_ la boucle 'while' (simple) ou gardez un tableau de lignes (un peu compliqué). En l'état, vous ne comptez que les lignes. –

Répondre

5

Remplacer

while(fgets(line, sizeof(line),stdin)){ 
     i++; 
    } 

     for(k=0; k<i; k++){ 
      makeLower(line); 
      printf("%s", line); 
     } 

avec

while(fgets(line, sizeof(line),stdin)) 
{ 
    makeLower(line); 
    printf("%s", line); 
} 

Ou si vous voulez imprimer toutes les lignes après que vous les avez saisies ...

char all_lines[200][200]; // 200 different strings with 200 chars max in each 
int line_count; 
for(line_count = 0; fgets(all_lines[line_count], 200, stdin); line_count++) {}; 
for(i = 0; i < line_count; i++) 
{ 
    makeLower(all_lines[i]); 
    printf("%s",all_lines[i]); 
}; 
+0

Ok, merci. J'ai un autre problème. Que se passe-t-il si j'ai un interrupteur avec plusieurs interrupteurs? – NouName

+1

Votre anglais ne semble pas être compréhensible, mais ça va. Je vous suggère de modifier votre question actuelle ou en faire une nouvelle. –