创建可以使用c fscanf读取的文本文件

时间:2013-03-28 09:44:31

标签: c file-handling

这是我的程序,我试图读取一个简单的文本文件并将输出存储在一个结构中。我目前面临的问题是在while循环中它无法工作。文件句柄似乎读取文件。此外,输入文件是使用带有给定文本的简单Windows记事本创建的 - 这可能是个问题吗?

#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

编辑:更正了错字。

1 个答案:

答案 0 :(得分:4)

此外,您还需要了解功能feof返回的内容:

返回:

在设置与流关联的文件结束指示符的情况下,返回非零值。 否则,返回零。

你应该写

while(feof(fp)==0)