我试图在 .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/