我正在尝试创建一个写入.txt文件的简单程序,但此代码无效。
#include <stdio.h>
#include <string.h>
#include "main.h"
int main(int argc, const char * argv[])
{
FILE *f = fopen("text.txt", "w+");
char c[256];
printf("What's your name?\n");
scanf("%s", c);
fflush(f);
if (c!=NULL)
{
printf("not null\n");
int q = fprintf(f, "%s", c);
printf("%d", q);
}
else
{
printf("null\n");
}
printf("Hello, %s\n", c);
fclose(f);
return 0;
}
printf
返回它不为空,int q
返回char的长度。为什么不写这个文件?
答案 0 :(得分:1)
printf返回它不为空,
这是因为c不是null,因为你已经将你的名字串扫描到它中。
为什么不写这个文件?
该程序在我的系统上正常运行。
- 编辑 -
FILE *f = fopen("text.txt", "w+");
if (NULL == f)
perror("error opening file\n");
通过这种方式进行错误处理,将显示确切的原因(在您的情况下为权限),
答案 1 :(得分:0)
原来我没有使用正确的权限运行。我这个愚蠢的错误。
答案 2 :(得分:0)
首先,您已在本地范围内声明c
,因此它永远不会是NULL
。如果您想检查用户是否输入了任何内容,请在扫描完字符串后检查c
的长度:
if (strlen(c) == 0) {
///
}
其次,检查您是否有权写入当前工作目录。您应该检查fopen
的返回值:
if (!f) {
fprintf(stderr, "Failed to open text.txt for writing\n");
}