У меня есть txt-файл с именами файлов и их размером. Это, как я написал текстовый файл:Чтение строки за строкой C
banana //file name
3 //the size of file banana
programs
12
music
524
Я должен найти клавиатуры вводится имя файла и отобразить его размер.
Это мой код:
FILE *text;
text=fopen("text.txt","r");
printf("Scan the number of letters of your file name");
int n;
scanf("%d",&n);
char s[++n];
printf("Scan the file name you are looking for: ");
int i;
for(i=0;i<=n;i++)
{
scanf("%c",&s[i]);
}
int l=0;
char c[n];
char g;
while(!feof(text))
{
if(l%2==1) {fgetc(text); fgetc(text); l++;}
if(l%2==0)
{
fgets(c,n,text);
fgetc(text);
for(i=0;i<n;i++)
{
printf("%c",c[i]);
}
l++;
}
}
Очевидно, что это не правильно. Вы можете мне помочь? Я немного смущен.
Первое наблюдение: 'feof' - это не способ сделать это [Почему« while (! Feof (file)) «всегда неправильно?» (Http://stackoverflow.com/questions/5431941/why- это-то время-feof-файлов всегда-неправильно). Путь к работе - это цикл, управляемый результатом «fgets», который читает одну текстовую строку за раз. 'while (fgets (...)! = NULL) {}', тогда вы анализируете строку, которая была прочитана. –
'for (i = 0; i <= n; i ++) {scanf ("% c ", &s[i]);}' <--- Вы переполняете этот буфер. Остановите. В какой книге вы читаете? Что бы это ни было, это не работает для вас ... Вы хотели бы предложить книгу, которая обычно работает намного лучше? – Sebivor