首先抱歉,如果这是一个愚蠢的问题(肯定是这样的话),但我真的很擅长在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;
}
我的问题在哪里? 谢谢
答案 0 :(得分:6)
问题似乎在于这一行:
fd=open("home/user/test.txt", O_WRONLY | O_APPEND | O_CREAT)==-1
等比较运算符==
具有更高的优先级,因此首先进行评估。因此,您不是将文件描述符编号分配给fd
,而是将比较结果分配给fd
。
修复此问题很简单,因为您可以在括号()
中进行比较之前将部件包围起来。