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;
}

这段小代码可能有什么问题?我已经检查并且函数'write'返回-1,即使函数'open'在文件不存在时创建文件。谢谢。

4

2 回答 2

3

write将指向内存缓冲区的指针作为第二个参数,但您将其传递给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 回答