2

テキストをファイルに書き込みたい。fwrite() の代わりに write() を使用する必要があります

void write(char *buffer, char *target){
int fh;
    if((fh=open(target, O_RDWR)) >= 0){
                    printf("It works\n");
    } else {
        printf("Cannot open\n");
    }

    if((write(fh, buffer, sizeof(buffer))) >= 0){
        printf("-> It works\n");
    } else {
        printf("Cannot write\n");
    }
    close(fh);
}

ファイルに書き込むことはできますが、読み取ることができません。バッファにはテキストが含まれていますが、ターゲット ファイルを開くと \00\00\00\00 しか表示されません

fopen と fwrite で可能だと聞きましたが、open() と write() を使用する必要があります。誰かが私を助けてくれることを願っています。

4

3 に答える 3

3
  if((write(fh, buffer, sizeof(buffer))) >= 0){

バッファの長さを関数に渡す必要があります。sizeof(buffer) は、char* データ型 (4 (32 ビット) または 8 (64 ビット) バイト) のサイズを返します。

于 2013-01-07T01:43:27.810 に答える
1

write()write とも呼ばれるシステム コール C ラッパーのエイリアスになるため、独自に定義する必要はありません。

さらに、バッファに文字列が含まれている場合は、その長さを正確に書き込む必要があります。

void mywrite(char *buffer, char *target) {
. . .
    write(fh, buffer, strlen(buffer))
于 2013-01-07T01:44:17.947 に答える
1

a) Your own function name is write

b) Use strlen instead of sizeof for last parameter of write.

So

a) Change your function name to something else other than write.

b) Instead of sizeof, use strlen.

于 2013-01-07T01:46:04.377 に答える