2012-06-16 41 views
0

首先感到抱歉,如果这是一个愚蠢的问题(当然是),但我真的很陌生,在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

什么写回来?你在第二个printf中获得了什么? – Jay

回答

6

的问题似乎是这一行:

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

平等比较操作==具有更高的优先级,因此首先被计算。因此,不是将文件描述符编号分配给fd,而是将比较结果分配给fd

解决这个问题很简单,因为您可以在圆括号()的比较之前环绕零件。

+0

哦,你是对的,非常感谢你^^ – cifz

相关问题