我正在使用CodeBlocks,GCC和使用C语言编写。我的代码如下:分割错误C语言读取简单字
char word[50];
FILE *fn;
fn = open("word.txt", "rb");
if(fn == NULL) perror("File not opened");
while(!feof(fn))
{
fscanf(fn, "%s", word);
}
该文本文件只有一个字(目前是“蝙蝠侠”)。我曾尝试过各种版本的代码,包括以下内容:
char* word;
char = malloc(50);
FILE *fn;
fn = open("word.txt", "rb");
if(fn == NULL) perror("File not opened");
while(!feof(fn))
{
fscanf(fn, "%s", &word);
}
老实说,我不知道为什么(为什么会这样困难的),但代码块是给我的错误是可怕的SIGSEV分段错误的feof线。当我没有做while循环时,fscanf会抛出Segmentation错误。请帮忙!我不经常在C工作,我记得现在为什么。即使是最简单的事情也很难。提前致谢。
更新: 其实我也有这个改变开行的工作(上一个):
fn = fopen("C://Temp//word.txt", "rb");
如何与相对路径这项工作?
'perror'只是打印一条消息。它不会终止程序。所以如果'fn'为空,就会发生不好的事情。 – Mat
如果应该是'fopen',而不是'open',并且你的编译器应该警告你这个问题 - 你正在编译'gcc -Wall ...'我希望? –
对不起,它正在发出警告。 @Mat我已经让程序返回,它是说word.txt不是一个有效的文件或目录,即使有一个word.txt与我正在运行的.exe文件在同一目录中 - 我错过了什么吗? –