0

.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;
}

printfnullではないことを返し、charのint q長さが何であれを返します。なぜこれがファイルに書き込まれないのですか?

4

3 に答える 3

1

printfは、nullではないことを返します。

これは、名前の文字列をスキャンしたため、cがnullではないためです。

なぜこれがファイルに書き込まれないのですか?

私のシステムでは、プログラムは正常に機能しています。

- 編集 -

FILE *f = fopen("text.txt", "w+");
if (NULL == f)
  perror("error opening file\n");

このようにエラー処理を行うことにより、正確な理由(あなたの場合はパーミッション)が表示され、

于 2013-03-07T03:03:21.837 に答える
0

正しい権限で実行していなかったことがわかりました。私の側の愚かな間違い。

于 2013-03-07T03:02:22.133 に答える
0

まずc、ローカルスコープで宣言したので、宣言することはありませんNULL。ユーザーが何かを入力したかどうかを確認したい場合cは、文字列をスキャンした後の長さを確認してください。

if (strlen(c) == 0) {
    ///
}

次に、現在の作業ディレクトリに書き込む権限があるかどうかを確認します。の戻り値を確認する必要がありますfopen

if (!f) {
    fprintf(stderr, "Failed to open text.txt for writing\n");
}
于 2013-03-07T03:06:35.523 に答える