C中的fprintf()函数无法正常工作

时间:2018-06-30 10:11:27

标签: c stdio

我编写了这段代码,以便从用户输入数字并将其输出到文件中。但是它不起作用,运行代码后output.txt文件仍然为空。 请告诉我我做错了什么。 我保证在运行程序之前已经创建了output.txt文件,因此 文件指针将不是NULL

#include <stdio.h>
#include <stdlib.h>
int main (void)
{
FILE *ptr;ptr=fopen("output.txt","rw");
if(ptr==NULL){printf("Error in oppening file aborting .......");exit(0);}
char ch[100];
scanf("%s",ch);
fprintf(ptr,"%s",ch);
fclose(ptr);
return 0;
}

1 个答案:

答案 0 :(得分:2)

fopen documentation开始,支持的访问模式为:

  

“ r”读取:打开文件进行输入操作。该文件必须存在。

     

“ w”写:创建用于输出操作的空文件。如果一个文件   相同名称已经存在,其内容将被丢弃,文件   被视为一个新的空文件。

     

“ a”附加:打开文件以在文件末尾输出。输出量   操作始终将数据写入文件的末尾,然后进行扩展。   重新定位操作(fseek,fsetpos,rewind)将被忽略。的   如果文件不存在,则创建该文件。 “ r +”读取/更新:打开文件   用于更新(用于输入和输出)。该文件必须存在。

     

“ w +”写入/更新:创建一个空文件并打开以进行更新(两者都   用于输入和输出)。如果同名文件已经存在   内容将被丢弃,该文件将被视为新的空文件。

     

“ a +”附加/更新:打开文件进行更新(用于输入和输出)   所有输出操作都在文件末尾写入数据。   重新定位操作(fseek,fsetpos,倒带)会影响下一个   输入操作,但输出操作将位置移回   文件末尾。如果文件不存在,则会创建该文件。

在您的代码中使用无效的“ rw”,这就是您的程序无法运行的原因。

将“ rw”更改为“ w”,您的程序将运行。请注意,您不需要创建output.txt,如果您当前的用户在程序目录中具有写权限,fopen会为您创建它。