![](/img/trans.png)
[英]Fscanf returns the same values in a loop once a line is reached that does not contain a value that is being scanned for
[英]fscanf() returns the same pattern in a loop
以下代码中的fscanf函数一次又一次地在文件中匹配相同的模式,而不是继续前进到下一个模式。 我怎样才能解决这个问题?
void checkInput(char *fileName, int time, int* totalProcesses)
{
FILE *input;
int startTime;
int pid;
int prio;
int vruntime = 50;
input = fopen(fileName, "r");
do
{
fscanf(input, "%i start %i prio %i", &pid, &startTime, &prio);
if(startTime == time)
{
createProcess(pid, startTime, vruntime);
totalProcesses++;
printf("%s\n %i", "proccess created", pid );
}
} while ( !feof(input) );
fclose(input);
}
检查fscanf的返回值-当它失败时,它不会读取任何内容,因此,如果您循环并再次尝试,将发生相同的情况。 相反,您需要以下内容:
while(fscanf(input, "%i start %i prio %i", &pid, &startTime, &prio) == 3) {
if(startTime == time) {
createProcess(pid, startTime, vruntime);
totalProcesses++;
printf("%s\n %i", "proccess created", pid );
}
}
这也意味着您不使用feof
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.