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

私の問題はどこにありますか?ありがとうございました

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 に答える