0

首先很抱歉,如果这是一个愚蠢的问题(当然它是),但我对 Unix 中 Syscall 的使用真的很陌生。我试图使用“write”在文件上写一些东西;它正确地创建了文件,但是上面没有写任何东西,这就是代码:

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;
}

我的问题在哪里?谢谢

4

1 回答 1

6

问题似乎出在这一行:

fd=open("home/user/test.txt", O_WRONLY | O_APPEND | O_CREAT)==-1

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

解决这个问题很简单,因为您可以将比较前的部分括在括号中()

于 2012-06-16T17:52:30.733 回答