我试图在.txt文件中写入变量environ的内容。

int archivo = open(argv[1], "rw");
int i=0;
while(environ[i]!=NULL){
    write(archivo, environ[i], 1024);
    i++;
}

文件已创建,但未添加任何内容。有人知道为什么吗?

最佳答案

查阅man 2 open以获得open的正确参数。应该是:

open(argv[1], O_WRONLY | O_CREAT | O_TRUNC);

你应该只写你实际拥有的广告:
write(archivo, environ[i], strlen(environ[i]));

你必须确保你写的东西实际上留下了缓冲区:
size_t string_length = strlen(environ[i]);
size_t wrote = 0;
while (wrote < string_length) {
    size_t bytes_wrote = write(archivo, environ[i] + wrote, string_length - wrote);
    if (bytes_wrote >= 0)
        wrote += bytes_wrote;
    else {
        perror("write");
        abort();
    }
}

write并不保证您提交的所有内容都是书面的。
理想情况下,您应该寻找更适合程序员的stdio调用fopenfwrite
FILE * fp = fopen(argv[1], "w");

// loop i
if (!fwrite(environ[i], strlen(environ[i]), 1, fp)) {
    perror("fwrite");
    abort();
}

关于c - C语言中的open()和write()函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22018892/

10-14 03:19