成功写入不会在文件上写入任何内容

cif*_*ifz 0 c unix linux file system-calls

首先抱歉,如果这是一个愚蠢的问题(肯定是这样),但我真的很擅长在Unix中使用Syscall.我试图用"写"在文件上写东西; 它正确地创建了文件,但没有写任何内容,这就是代码:

int main(void) {
   int fd;
   char *string = "Test";
   if(fd=open("home/user/test.txt", O_WRONLY | O_APPEND | O_CREAT)==-1){
    perror("Open failed");

   }
   printf("%d\n", strlen(string));
   printf("Wrote %d byte on the file", write(fd,string,strlen(string)));
   close(fd);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

哪里是我的问题?谢谢

nha*_*tdh 6

问题似乎与这一行有关:

fd=open("home/user/test.txt", O_WRONLY | O_APPEND | O_CREAT)==-1
Run Code Online (Sandbox Code Playgroud)

等于比较运算符==具有更高的优先级,因此首先进行评估.因此fd,您不是将文件描述符编号分配给,而是将比较结果分配给fd.

解决这个问题很简单,因为您可以在括号中进行比较之前围绕零件().