2017-01-29 8 views
-1

국제 네트워크에있는 컴퓨터의 숫자 주소 인 'Internet'에는 마침표로 구분 된 네 부분이 xxx.yyy.zzz.mmm 형식으로 있습니다. 여기서 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 

컴퓨터의 쌍은 주소의 첫 두 구성 요소가 동일한 경우 동일한 지역에있는 것으로 말한다. 일부 컴퓨터의 세부 사항을 감안할 때 알고리즘을 설계하고 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]); 
} 

코드가 출력을 생성하지 않으며 (런타임 오류) 이유를 파악할 수 없습니다. EDIT : 컴파일러 오류 또는 경고가 없습니다. 그냥 실행하면 빈 출력 화면이 나타납니다.

+0

이것은 C 코드이며 태그 만 달아야합니다. C++에는이 모든 것을 수행하는 더 좋은 방법이 있습니다. 또한'main'은'int'를 리턴해야합니다. C99는 구현 정의 된 반환 유형을 허용하지만 이식성을 위해서는'int'를 사용해야합니다. –

+0

받고있는 오류 메시지를 제공해주십시오. –

+0

EDIT : 컴파일러 오류 또는 경고가 없습니다. 그냥 실행하면 빈 출력 화면이 나타납니다. – Recurse

답변

0

코드가 내 컴퓨터에서 원하는 출력을 생성했습니다. 'n'을 입력하는 것을 잊었거나 'n'보다 적은 주소를 제공 할 가능성이 있습니다.