我有这段代码从文件中读取整数。 我使用相同的代码从另一个文件 读取双打,并完美地工作,但这次循环是 变得无限。可能是什么?我正在阅读的文件 是由程序编写的,可以吗?我不知道 这是什么意思,但我的操作系统说这个文件是 二进制。那么,任何帮助将不胜感激。谢谢。在C中读取文件
i=1;
cadeia = malloc (i * sizeof(int));
if (!cadeia){ //Avalia se a alocação de memória foi bem sucedida
printf("Problema na alocação de memória para cadeia.");
exit(0);
}
while (!feof(arq_cadeia)){ /*Fazendo leitura e alocação de memória da matriz de transição*/
fscanf (arq_cadeia , "%d" , (cadeia+i-1));
i++;
cadeia = realloc (cadeia , i * sizeof(int));
if (!cadeia){ //Avalia se a alocação de memória foi bem sucedida
printf("Problema na alocação de memória para cadeia.");
exit(0);
}
printf("%d\n", *(cadeia+i-1));
}
您需要检查'fscanf'的结果并确保它等于1. – 2012-07-10 15:38:26
关于'while(!feof(arq_cadeia))',请注意,'feof'只会变为true _after_您尝试读取文件结尾。在循环中,检查'fscanf'的返回值,如果遇到无效输入,则保留在流中,并且所有后续扫描都失败。 – 2012-07-10 15:38:55
这里与你的问题无关,但你应该考虑以更大的增量分配你的缓冲区,预分配一个块,如果你需要更多的话,然后在块中做一个realloc。 – pstrjds 2012-07-10 15:39:13