fscanf什么都不读

fscanf什么都不读,c,file,C,File,我试图从文件中读取整数,但fscanf不能很好地使用此代码 fp=fopen("record.dat","r"); if(fp==NULL) { printf("Another reading error"); } else { printf("\nstarting to read\n"); i=0; while(i<10) { if(fscanf(fp,"%d",&temp)>0) printf("%d

我试图从文件中读取整数,但fscanf不能很好地使用此代码

fp=fopen("record.dat","r");
if(fp==NULL)
{
    printf("Another reading error");
}
else
{
    printf("\nstarting to read\n");
    i=0;
    while(i<10)
    {
        if(fscanf(fp,"%d",&temp)>0)
        printf("%d\n",temp);
        i++;
    }
    fclose(fp);
}
该文件包含由新行字符分隔的10个数字。此代码不生成或打印任何内容。代码有什么问题,请帮我解决

编辑
作为w+或r的访问模式没有给出正确的预期答案。

您正在以可写文件而不是可读文件的形式打开文件

你必须把w+换成r


w+如果文件不存在,则创建该文件,否则将截断该文件。流位于文件的开头。

您正在以可写文件而不是可读文件的形式打开文件

你必须把w+换成r

w+如果文件不存在,则创建该文件,否则将截断该文件。流位于文件的开头。

w+实际上打开文件进行读写。但是,文件长度被截断为0。 这可能是打印空行的原因。 Try r+打开文件进行读写,不进行截断或r

w+实际上打开文件进行读写。但是,文件长度被截断为0。 这可能是打印空行的原因。
Try r+打开文件进行读写,不进行截断或r

@BLUEPIXY w+为读写模式。这有什么区别?我也试过了。结果没有差别。我认为如果你不能在模式r下读取,文件的格式会有所不同。@max区别在于w+将文件长度截断为0,在这种情况下,在首次写入之前尝试从文件中读取某些内容将无法产生有用的结果。噢,文件的内容已经丢失。@BLUEPIXY w+是读写模式。这有什么区别?我也试过了。结果没有差别。我认为如果你不能在模式r下读取,文件的格式会有所不同。@max区别在于w+将文件长度截断为0,在这种情况下,在您首先写入内容之前尝试从文件中读取内容将无法产生有用的结果。噢,文件内容已丢失。w+为读写模式。这有什么区别?我也试过了。结果没有差异。更改格式字符串,您不会读取换行符。查看我的更新。如果该文件存在,它将被截断,因此它将为空,需要w+%d\n吗?我的意思是fscanf将数据流化,直到它得到任何空格,对吗?是的,谢谢你的回答。我得到了输出。文件record.dat不在同一目录中。我现在不能100%确定,已经有一段时间了。我认为你的主要问题是w+问题。我删除了换行符的建议。w+是读写模式。这有什么区别?我也试过了。结果没有差异。更改格式字符串,您不会读取换行符。查看我的更新。如果该文件存在,它将被截断,因此它将为空,需要w+%d\n吗?我的意思是fscanf将数据流化,直到它得到任何空格,对吗?是的,谢谢你的回答。我得到了输出。文件record.dat不在同一目录中。我现在不能100%确定,已经有一段时间了。我认为你的主要问题是w+问题。我删除了关于换行的建议。