2013-03-28 2 views
0

Это моя программа, в которой я пытаюсь прочитать простой текстовый файл и сохранить вывод в структуре. Проблема, с которой я сейчас сталкиваюсь, - это цикл while, в котором он не работает. Файл-дескриптор, похоже, читает файл. Кроме того, входной файл был создан с помощью простой блокнота Windows с данным текстом - может это проблема?Создание текстового файла, который можно прочитать с помощью c fscanf

#include<process.h> 
#include<stdio.h> 
#include<conio.h> 
#include<string.h> 

struct studyCentre { 
    char stdCode[10], stdName[40], regName[40], coord[20], prgin[20], address[35], email[40], webs[45]; 
    int ph; 
} std; 

int flag=0; 

void main() { 
    FILE *fp; 

    fp = fopen("studyCentre.txt", "r+"); 
    if (fp==NULL) { 
     printf("No file found"); 
     exit(0); 
    } 

    while(feof(fp)!=0) { 
    //while(!fp.EOF()) { 
     fscanf(fp, "%s%s%s%s%s%s%s%s%d", std.stdCode, std.stdName, std.regName, std.coord, std.prgin, std.address, std.email, std.webs, &std.ph); 
     printf("\n Study Center Name :: %s \n Regional Centre Name :: %s \n Coordinator Name = %s \n Program incharge Name :: %s Address %s \n Email :: %s \n Website :: %s \n Phone :: %d", std.stdName, std.regName, std.coord, std.prgin, std.address, std.email, std.webs, &std.ph); 
     flag=1; 
    } 
    if (flag==0) { 
     printf ("No record found"); 
    } 
    fclose(fp); 
} 

Выход

No record found 

Это текст в моем текстовом файле.

111 
a 
b 
c 
d 
e 
f 
g 
h 
122 

Edit: Исправлена ​​опечатка.

+0

Не редактируйте свой вопрос в ответ на ответы. Это приводит к путанице и аннулирует предоставленные ответы. – hmjd

+0

Это была опечатка. Моя фактическая программа была написана. Прошу прощения за ошибку. – abhig10

+0

@ abhig10, проверьте заголовок вопроса, возможно, есть и опечатка. Я думаю, вы хотели 'fscanf' вместо' scanf'. – Dipto

ответ

4

Также вы должны смотреть на то, что функция feof возвращается:

Возврат:

Ненулевого значение возвращается в том случае, когда индикатор конца файла, связанный с потоком является задавать. В противном случае возвращается ноль.

Вы должны написать

while(feof(fp)==0) 
Смежные вопросы