【发布时间】:2013-04-02 14:58:26
【问题描述】:
我正在使用 fscanf() 函数从文本文件中逐行读取数据。它运行良好,但突然间我不知道我犯了什么错误,现在该函数返回一个负值。 下面是我的代码sn-p:
FILE *fp;
char ip[16];
int port;
fp = fopen("ClientInformation.txt", "r");
int size = -1;
while (!feof(fp))
{
fgetc(fp);
size++;
}
char buff[1000];
sprintf(buff,"%i",size);
MessageBox(NULL,
buff,
"Size",
MB_ICONINFORMATION);
if(size > 0)
{
while (fscanf(fp, " %s %d", ip, &port) > 0)
{
MessageBox(NULL,"fscanf() Successful","SUCCESS!", MB_ICONINFORMATION);
}
}
【问题讨论】:
-
负值可能是错误码,如果不是检查errno变量...
-
嗯,你的
while (!feof(fp))循环不是将fp放在EOF上吗? -
假设它甚至完全打开(从未检查过)。
-
永远不要在断点条件下使用 feof()
-
contd....我建议每当您调用一个应该返回某些值的函数...始终检查返回值...例如 fopen()....您没有检查它是否返回正常...如果文件不存在怎么办?