2009-11-30 8 views
0

Salut, Comment puis-je copier du texte à l'intérieur d'un fichier texte dans un tableau de caractères multidimensionnel?copier du texte dans un tableau de caractères à partir d'un fichier texte en C?

en supposant que le fichier texte (text_file.txt) contenu

ceci est la première ligne

ceci est la deuxième ligne

ceci est la troisième ligne

#include <stdio.h> 
int main(void){ 
FILE *f; 
f=fopen("text_file.txt","r"); 
if (f==NULL){ 
    printf("invalid!"); 
    return 1; 
    } 
else { 
    printf("successful"); 
    } 

char copied_text[80][80]; 

while (!feof(f)){ 
    int i=0,j=0; 
    fgets(copied_text[i][j],"%s",f); 
    i++; 
    } 

return 0; 
} 

-merci.

Répondre

1

Je pense que votre code fonctionne presque.
Il suffit de déplacer la déclaration de int i hors de la boucle.
Modifiez le premier paramètre de fgets en texte copié [i] car il a besoin d'un pointeur ici.
Modifier le second paramètre de fgets à 80 car il devrait être un int indique la longueur de chaîne acceptable.

#include <stdio.h> 
int main(void){ 
    FILE *f; 
    f=fopen("text_file.txt","r"); 
    if (f==NULL){ 
     printf("invalid!\n"); 
     return 1; 
    } 
    else { 
     printf("successful\n"); 
    } 

    char copied_text[80][80]; 

    int i=0; 
    while (!feof(f)){ 
     fgets(copied_text[i],80,f); 
     ++i; 
    } 

    for(int i = 0; i <3; ++i) 
     printf("%s\n", copied_text[i]); 
    return 0; 
} 
+2

'while (! Feof (...))' est presque toujours faux, et ce cas ne fait pas exception. Vous devriez changer ça en 'while (fgets (...)! = NULL)'. – caf

+0

Il doit également y avoir une vérification que pas plus de 80 lignes sont entrées. –

+0

vous avez raison. il y a encore beaucoup à améliorer dans l'exemple de code du point de vue de l'ingénierie. J'ai juste essayé de modifier le code original pour exprimer l'idée de base. – Raymond

Questions connexes