2009-11-30 3 views
0

Эй, как я могу начать копирование текста внутри текстового файла в многомерный массив символов?копирование текста в массив символов из текстового файла в C?

предполагая текстовый файл (text_file.txt) содержал

это первая линия

это вторая линия

это третья линия

#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; 
} 

-услуги.

ответ

1

Я думаю, что ваш код почти работает.
Просто переместите объявление int i из цикла.
Измените первый параметр fgets на copied_text [i], потому что здесь нужен указатель.
Измените второй параметр fgets на 80, потому что он должен быть int, указывает допустимую длину строки.

#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 (...))' почти всегда ошибочно, и этот случай не является исключением. Вы должны изменить это на 'while (fgets (...)! = NULL)'. – caf

+0

Необходимо также проверить, что введено не более 80 строк. –

+0

Вы, парни, правы. есть еще много, чтобы улучшить код образца с технической точки зрения. Я просто попытался изменить исходный код, чтобы выразить основную идею. – Raymond

Смежные вопросы