2017-01-29 8 views
-1

国際ネットワーク上のコンピュータの数値アドレス「Internet」には、xxx.yyy.zzz.mmmという形式の4つの部分がピリオドで区切られています。xxx、yyy、zzz、およびmmm正の整数です。ローカルでは、コンピュータは通常、ニックネームでも知られています。ランタイムエラーを伴う文字列比較部分のデバッグ

サンプルデータ

IP address  Name 
111.22.3.44  platte 
555.66.7.88  wabash 
111.22.5.66  green 
0.0.0.0   none 

コンピュータ一対のアドレスの最初の2つの成分が同じである場合、同じ地域にあると言われます。いくつかのコンピュータの詳細が与えられると、アルゴリズムを設計し、Cプログラムを記述して、同じ場所からの各コンピュータ対を識別するメッセージのリストを表示する。メッセージでは、コンピューターはニックネームで識別される必要があります。この例では、表示されるメッセージはMachines platteで、緑色は同じローカルネットワーク上にあります。

#include<stdio.h> 
#include<string.h> 
void main() 
{ 
    int n,p,i,j; 
    char s[20][20],na[10][10]; 
    scanf("%d",&n); 
    for(i=0;i < n;i++) 
    { 
     scanf("%s%s",s[i],na[i]); 
     p=0; 
     j=0; 
     while(p!=2) 
     { 
      j++; 
      if(s[i][j]=='.') 
      p++; 
     } 
     s[i][j]='\0'; 
    } 
    for(i=0;i < n-1;i++) 
    for(j=i+1;j < n;j++) 
    if(strcmp(s[i],s[j])==0) 
    printf("Machines %s and %s are on the same local network",na[i],na[j]); 
} 

このコードでは出力がまったく生成されず(実行時エラー)、理由が分からないようです。 編集:コンパイルエラーまたは警告はありません。ちょうど実行が私に空白の出力画面を与えます。

+0

これはCコードであり、そのようにタグ付けする必要があります。 C++ではこれをすべて行うためのより良い方法があります。また、 'main'は' int'を返すべきです。 C99は実装定義の戻り値型を許可しますが、移植性のためには 'int'を使うべきです。 –

+0

受信しているエラーメッセージを入力してください。 –

+0

EDIT:コンパイルエラーまたは警告はありません。ちょうど実行が私に空白の出力画面を与えます。 – Recurse

答えて

0

あなたのコードは私のマシン上で望ましい出力を作り出しました。 「n」と入力するアドレスの数を入力することを忘れているか、「n」よりも少ないアドレスを入力している可能性があります。