我编写了这段代码,以便从用户输入数字并将其输出到文件中。但是它不起作用,运行代码后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;
}
答案 0 :(得分:2)
从fopen
documentation开始,支持的访问模式为:
“ r”读取:打开文件进行输入操作。该文件必须存在。
“ w”写:创建用于输出操作的空文件。如果一个文件 相同名称已经存在,其内容将被丢弃,文件 被视为一个新的空文件。
“ a”附加:打开文件以在文件末尾输出。输出量 操作始终将数据写入文件的末尾,然后进行扩展。 重新定位操作(fseek,fsetpos,rewind)将被忽略。的 如果文件不存在,则创建该文件。 “ r +”读取/更新:打开文件 用于更新(用于输入和输出)。该文件必须存在。
“ w +”写入/更新:创建一个空文件并打开以进行更新(两者都 用于输入和输出)。如果同名文件已经存在 内容将被丢弃,该文件将被视为新的空文件。
“ a +”附加/更新:打开文件进行更新(用于输入和输出) 所有输出操作都在文件末尾写入数据。 重新定位操作(fseek,fsetpos,倒带)会影响下一个 输入操作,但输出操作将位置移回 文件末尾。如果文件不存在,则会创建该文件。
在您的代码中使用无效的“ rw”,这就是您的程序无法运行的原因。
将“ rw”更改为“ w”,您的程序将运行。请注意,您不需要创建output.txt
,如果您当前的用户在程序目录中具有写权限,fopen
会为您创建它。