我试图在.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
调用fopen
和fwrite
。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/