使用运行时错误调试字符串比较部件

时间:2017-01-29 05:07:33

标签: c debugging c-strings strcmp

国际网络上计算机的数字地址,'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和green在同一本地网络上。

#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]);
}

代码根本不会产生输出(运行时错误),我似乎无法弄清楚原因。 编辑:没有编译器错误或警告。只是执行给我空白的输出屏幕。

1 个答案:

答案 0 :(得分:0)

您的代码在我的机器上产生了所需的输出。 您很可能忘记输入&#39; n&#39;作为输入的地址数量或提供的地址少于&#39; n&#39;。