1

これが私のコードの一部です。次の要素がないかどうかを確認し、プログラムを終了します。しかし、ポインターを整数と比較するという警告が表示されます。どうすれば修正できますか、乾杯。

エラーはこの部分 if(nums[i] == NULL)

/* scanf the file, and store the value in the nums */
for(i = 0; i < numOfInt; i++){

   fscanf(f, "%d", &nums[i]);

   /* check if the value is too big */ 
   if(nums[i] == NULL){  
 printf("arg1 is not equal to nums of element in the file\n");
 exit(1);
   } 
 }
4

3 に答える 3

13

のドキュメントを見てくださいfscanf。そのようには機能しません。むしろその戻り値を使用してください。

ret = fscanf(f, "%d", &nums[i]);

if (ret != 1)
    /* error */
于 2012-11-05T13:39:55.063 に答える
3

numsそれが整数の配列であると仮定しましょう。

次に、整数を と比較していNULLます。NULLポインターに使用されます。

リンゴとオレンジを比較するようなものです。

マニュアルページに慣れ、戻り値に注意することは価値があります。

問題の関数は、解釈されたアイテムの数を返します。

于 2012-11-05T13:43:56.973 に答える
1

nums は int[] であると想定しています。NULL は通常 void* (ポインター) であるため、nums[i] と int をポインターと比較しても意味がありません。

于 2012-11-05T13:42:05.700 に答える