C - 读取文件错误..!f_in为空,不知道为什么?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C - 读取文件错误..!f_in为空,不知道为什么?相关的知识,希望对你有一定的参考价值。
// Trying to read file
void readFilee(char *namefile){
FILE *f_in = fopen(namefile,"r");
char x;
int i = 0;
if(!f_in){ printf("Error"); exit(0); }
/* read to EOF */
while(1){
x = getc(f_in);
if(x == '\n') continue;
archivo[i] = x;
if(x == EOF) break;
i++;
}
tamArchivo = i;
fclose(f_in);
}
错误是f_in的事实是空的,但我不明白为什么?我正在尝试连接具有多个客户端的服务器,客户端初始化等待连接。
命令verificion“if”我得到“错误”
答案
加
archivo[i] = '\0';
while循环终止后。这将在你的字符串qazxsw poi的末尾添加空字符
也可能是你的archivo
数组的内存空间不足以获取文件的全部内容,因此它可能导致缓冲区溢出,因此可能导致崩溃
另一答案
在使用之前验证archivo
不是NULL。我打赌fopen失败了,这导致f_in为NULL。以后当你打电话给f_in
时,它会崩溃。
如果不是这种情况,请尝试使用cgdb调试应用程序,并查看导致崩溃的行。
另一答案
尝试用getc
替换while (1)
。当文件结束时,这将退出循环。你不应该像在循环中一样检查文件的结尾。这将要求文件末尾字符位于文件中的某个位置。 while (!feof(f_in))
的值实际上是专门设计的,因此它不会出现在您的文件中。
要查看的其他内容是取消注释文件是否已成功打开。如果此检查失败,则不应尝试在文件指针上使用任何EOF
函数。
另一答案
你没有检查“archivo”的数组边界,这对我来说首先要检查
以上是关于C - 读取文件错误..!f_in为空,不知道为什么?的主要内容,如果未能解决你的问题,请参考以下文章