fscanf返回意外结果

时间:2016-06-04 22:11:02

标签: c

我一直在尝试一些文件io,并写了以下内容:

#include <stdio.h>

int main(){
    char stuff [80];
    FILE *file;
    file=fopen("hello.cheese", "w+");
    fprintf(file, "%s", "cheese");
    fscanf(file, "%s", stuff);
    printf("%s", stuff);
    fprintf(file, "\n%s", stuff);
    fclose(file);
    return 0;
}

所有这一切都将^ A放在文件中(奶酪下面的下一行)并且什么都不打印。

1 个答案:

答案 0 :(得分:0)

您可能希望仔细阅读fopen description,尤其是

  

当使用更新模式打开文件时(&#39; +&#39;作为mode参数中的第二个或第三个字符),可以在关联的流上执行输入和输出。但是,应用程序应确保输出不直接跟随输入,而无需调用fflush()或文件定位函数(fseek(),fsetpos()或rewind()),并且输入不会直接跟随除非输入操作遇到文件结尾,否则输出时不会调用文件定位功能。

您使用了&#39; w +&#39;模式,允许读写,但没有刷新,也没有在写入后回滚文件指针。

作为旁注,您的代码可能会使用一些错误检查(NULL != file)。