-2
...
main() {
   char **src_ip[10];
   char **dest_ip[10];
   char **lat[10];
   char *ip[20];

   while{
      //Read file
      //fgets();

      src_ip[j] = &data[0];
      dest_ip[j] = &data[1];
      lat[j] = &data[2];

      int idx;
      int addip;

      for(idx=0; idx<20; idx++)
      {
          addip = 0;
          //Check to see if the IP address is already in the array.
          if ((strcmp(*(src_ip[j]),  ip[idx]) == 0) ||
              (strcmp(*(dest_ip[j]), ip[idx]) == 0))
          {
              addip=1;
              break;
          }
          //If the IP address was already found then addip would equal 1.
          if (!addip){
              printf("new node: %s",*(ip[idx]));
          }
          else
              printf("Exist");
      }
   }
   j++;
}

2つの1d配列(arraysrc_ip[j]dest_ip[j]-)のchar文字列を比較し、1つの配列ip[idx]に挿入します。たとえば、を探すとip[1]、に移動します。これは、とを個別に調べるのではなく、src_ip[1]1つの配列のみを参照していることを意味します。ip[idx]src_ipdest_ip

コードに問題があるはずです-多分私は何かを省略しましたか?

4

1 に答える 1

1
if((strcmp(*(src_ip[j],ip[idx]) == 0) && (strcmp(*(dest_ip[j]),ip[idx]) == 0))
                     ^^

*(src_ip[j])*(dest_ip[j])等しいの両方を持つことはできませんip[idx]。使用するつもりだったのは、の||代わりに演算子でし&&た。(ちなみに、)上でマークしたところが欠けています)

また、あなたwhile(idx)は意味がありません。for上記または以下でループを制御していwhileますか?を使用するとwhile、条件がtrueの場合、ループ内で変更することはないため、無限ループが発生します。

于 2012-07-16T09:50:55.327 に答える