fprintf不工作C.

时间:2013-03-07 02:55:06

标签: c char printf

我正在尝试创建一个写入.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的长度。为什么不写这个文件?

3 个答案:

答案 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");
}