Mac中的C Write()错误

时间:2015-10-29 09:46:43

标签: c


我正试图在我的Macbook Air上的文本文件中写字符,但它似乎没有用。
我尝试通过Xcode和Terminal进行编译。

但结果是一样的:
文件描述:3
write()错误!

这是代码。

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>

void Error_handling(char* message);

int main() {
    int fd;

    char buf[] = "Let's go! \n";

    fd = open("data.txt", O_CREAT|O_RDONLY|O_TRUNC);
    if (fd == -1)
        Error_handling("open() Error! \n");

    printf("File Descripter: %d \n", fd);

    if(write(fd, buf, sizeof(buf))==-1)
        Error_handling("write() Error! \n");

    close(fd);

    return 0;
}

void Error_handling(char* message)
{
    fputs(message, stderr);
    exit(1);
}

2 个答案:

答案 0 :(得分:5)

您使用O_RDONLY打开文件,然后尝试编写,当然它报告错误。

正如评论所说,正确的开放变体应该是:

fd = open("data.txt", O_CREAT|O_WRONLY|O_TRUNC, 0600);

答案 1 :(得分:3)

您的文件以只读模式打开,这自然会阻止您写入文件。

true

使用

修复它
fd = open("data.txt", O_CREAT|O_RDONLY|O_TRUNC);
//                            ^ <- Your problem is here