C-write()未写入文件

C-write()未写入文件,c,file,C,File,我的问题很简单,当我尝试确认函数是否写在文件上时,没有显示任何内容,文件在那里,但文件中没有任何内容,应该是我想要的字符串的1024倍 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

我的问题很简单,当我尝试确认函数是否写在文件上时,没有显示任何内容,文件在那里,但文件中没有任何内容,应该是我想要的字符串的1024倍

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 ;
int-escreve1x(const-char*path,const-char*cadeia)
int fd=开放(路径,O|u创建,S|u IWUSR | S|u IXUSR | S|u IWGRP | S|u IXGRP | S|u IWOTH | S|IXOTH | S|IXOTH);
int i;
printf(“%s\n”,cadeia);
对于(i=0;i1),添加“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;
int fd=open(路径,O|u CREAT | O|RDWR,S|u IWUSR | S|uixusr | S|uiwgrp | S|uixgrp | S|uiwoth | S|IWOTH | S|IXOTH);

如果(fd)
cadeia
的内容是什么?您的文件流在哪里?fd
的值是什么?您可能应该将
O_WRONLY | O_create
传递到
open
:”。我认为
O_RDWR
这对于读取和写入来说已经足够了。那么为什么所有模式?您必须检查错误:
fd=open(…);if(fd<0){peror(path);exit(1);}
您的意思肯定是
如果(状态<0)
?您还应该检查
打开的返回值。如果文件小于一个磁盘块(通常为4096字节),除非关闭(fd),否则文件长度将为零;在写入完成后调用。即使文件大于磁盘块,在没有刷新(fd)或关闭(fd)的情况下,也不会写入最后一个要写入的块;没有关闭(fd)会导致资源泄漏。