0
  char* output= (char*) argv[2];
 92     fp = fopen(output, "w");
 93     if( fp = NULL )
 94     {
 95         printf("writing output failed");
 96         return 0;
 97     }
 98     fprintf(fp,"hello");

This is causing seg fault exc bad memory at line 98. What am I missing??

4

2 に答える 2

8

あなたのライン

if( fp = NULL)

比較する代わりにの値を に代入していますNULLfp

あなたが使用している必要があります

if( fp == NULL)
于 2012-10-15T14:50:24.060 に答える
5

93行目

if( fp = NULL )

fp を NULL と比較するのではなく、NULL に割り当てています。使用する

if( fp == NULL )

代わりは。

netcoder が指摘したように、コンパイラはこれについて警告する必要があります。if (NULL == fp)誤って代入の比較を交換した場合にコンパイラ エラーを生成する形式でテストを記述することもできます。(一部の人々は、このスタイルのコーディングを不快に感じるかもしれないので、コード レビューで苦情が発生する可能性があることに注意してください!)

于 2012-10-15T14:50:08.147 に答える