我有这段代码可以从文件中读取整数。 我使用相同的代码从另一个文件中读取 double 并且工作得很好,但是这次循环是 变得无限。可能是什么?我正在阅读的文件 是由程序编写的,是吗?我不知道 这是什么意思,但我的操作系统说该文件是 二进制。那么,任何帮助将不胜感激。谢谢。
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 ));
}
最佳答案
你的预感是对的,如果你的文件是二进制格式,scanf
无法读取它。如果您无法使用文本编辑器(例如记事本)查看数字,scanf
也无法读取它们。
顺便说一句,您的程序还有其他问题:每次读取数字时都重新分配整个数组,效率极低!最简单的事情是分配如此多的空间,以至于您不需要所有空间(不要担心“浪费”,只要您不超出顶部即可)。第二个最简单的方法是测量文件的大小(您需要 stat
或类似的东西)并估计其中的整数数量。第三个最简单,分配足够 10000 个整数,并仔细检查何时用完并分配两倍于已有的。
关于c - C语言读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11416864/