使用write()在C中写入文本

时间:2013-01-07 01:41:22

标签: c

我想将文字写入文件。我必须使用write()而不是fwrite()

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()。我希望有人可以帮助我。

3 个答案:

答案 0 :(得分:3)

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

您需要将缓冲区的长度传递给您的函数。 sizeof(缓冲区)将返回 char *数据类型的大小(4(32位)或8(64位)字节)。

答案 1 :(得分:1)

你真的不想定义自己的write(),因为它会为系统调用C包装器设置别名,也称为write。

另外,如果缓冲区中包含一个字符串,则需要准确写出其长度。

void mywrite(char *buffer, char *target) {
. . .
    write(fh, buffer, strlen(buffer))

答案 2 :(得分:1)

a)你自己的函数名是写

b)使用strlen而不是sizeof作为写入的最后一个参数。

所以

a)将您的功能名称更改为除写入之外的其他名称。

b)使用strlen而不是sizeof。