0

2日前に自分のマシンにLinuxをインストールし(人生で初めて:P)、今はファイルにcharを書き込もうとしています。どういうわけか、それは機能していません...これが私のコードです。

#include <stdio.h>
#include <fcntl.h>
int main (int xd, char *tab[]) {
    char *path1 = tab[1];
    int filee = open(path1, O_WRONLY | O_CREAT| O_TRUNC, 0777);
    write(filee, 'x', sizeof(char));
    close(filee);
    return 0;
}

この小さなコードの何が問題になっている可能性がありますか?チェックしたところ、関数'open'はファイルが存在しないときにファイルを作成しますが、関数'write'は-1を返します。ありがとう。

4

2 に答える 2

3

write2番目の引数としてメモリバッファへのポインタを取りますが、それを渡しますint

write(filee,'x',sizeof(char));

あなたはの線に沿って何かを試してみるべきです

char c = 'x';
write(filee, &c, sizeof(char));
于 2012-10-17T15:13:27.810 に答える
2

write()データへのポインタを期待する文字リテラルを渡しています。

次のようなものを試してください。

const char data[] = { 'x' };

write(fille, data, sizeof data);

open()また、ファイル記述子が有効であることに依存する前に、の戻り値を確認する必要があります。

慣れていないAPIを使用する場合は、マニュアルページを読んで、使用しているものに対して予想される引数を確認することをお勧めします。

また、より多くのコンパイラ警告を有効にする必要があります。これは、コンパイラが警告すべきことです。

于 2012-10-17T15:14:27.467 に答える