C写()不写入文件
问题描述:
我的问题很简单,当我试图确认如果函数写在文件上,什么都没有显示出来,文件在那里,但文件里面没有什么,应该是1024乘以我想要的字符串。C写()不写入文件
int escreve1x(const char* path , const char* cadeia)
int fd = open(path, O_CREAT, S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IWGRP | S_IXGRP | S_IROTH | S_IWOTH | S_IXOTH);
int i;
printf("%s\n", cadeia);
for (i=0 ; i<=1024 ; i++)
{
write(fd, cadeia, 10);
}
return 0 ;
答
1-添加“O_RDWR”标志使fd可写。 2 - 始终调试写入系统调用的结果;
int fd = open(path, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IWGRP | S_IXGRP | S_IROTH | S_IWOTH | S_IXOTH);
if(fd<0) {
printf("Open failed\n");
return 1;
}
int i;
printf("%s\n", cadeia);
for (i=0 ; i<=1024 ; i++) {
int status=write(fd, cadeia, 10);
if(status<0) {
printf("Write failed");
}
}
return 0;
如果说写入失败,那么检查errno。
+1
当然,您的意思是'if(status 2014-10-04 17:51:06
+1
文件长度(如果文件小于一个磁盘块(通常为4096字节))将为零,除非关闭(fd);在写作完成后调用。即使文件大于磁盘块,最后写入的块也不会在没有flush(fd)的情况下写入。或关闭(fd);没有关闭(fd)会导致资源泄漏。 – user3629249 2014-10-05 07:23:00
'cadeia'的内容是什么? – 2014-10-04 17:36:25
你的文件流在哪里? – Rustam 2014-10-04 17:44:13
'fd'的价值是什么?你应该通过'O_WRONLY | O_CREAT'到'open':“[参数标志必须包含以下访问模式之一:O_RDONLY,O_WRONLY或O_RDWR。(http://man7.org/linux/man-pages/man2/open.2。 HTML)”。 – 2014-10-04 17:45:28