0

次のコードを使用して、キーボードからテキストを読み取り、ファイルtext.datに書き込んでみました。ファイルは作成されましたが、空でした。

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <io.h>
#include <string.h>

int main()
{
    char s[201];
    int n,f = open("text.dat", O_RDWR | O_CREAT);
    while (fgets(s,200,stdin) != NULL)
        write(f, s,sizeof(s));
    close(f);
    return 0;
}
4

3 に答える 3

1

write(f, s, strlen(s))read()代わりに 使用fgets()し、代わりにその結果を使用しましたがstrlen()

于 2012-12-26T15:53:00.443 に答える
0

write間違っています。これを試して:

write(f, s, sizeof(s));

2番目のパラメーターは、の先頭へのポインターである必要がありますs。実際に渡しているのは、ポインターへのポインターです。

あなたがそれにいる間、その未使用のものを取り除きますint n

int f = open("text.dat", O_RDWR | O_CREAT);

追加するために編集

代わりに使用するwrite() 必要があります-おそらく初期化されていないジャンクを書き出しているため、ファイルが空であるように見えます。strlen()sizeof()

write(f, s, strlen(s));
于 2012-12-26T15:54:36.180 に答える
0

間違った方法でファイルを開いています。試すopen("text.dat", O_RDWR | O_CREAT,0666 );

PS
あなたは単にファイルへの書き込みアクセス権を持っていません。

于 2012-12-26T16:16:19.347 に答える