柜台的问题

时间:2010-11-23 05:54:22

标签: c

我有一个简单的程序,它分别读取输入的名字和姓氏,并显示每个字符中存在的字符数,但我得到的值都是5。

以下是代码:

#include<stdio.h>
void main()
{
    char fname[20];
    char lname[20];
    int count=0;
    int counter=0;
    printf("enter your  first name");
    scanf("%s",fname);
    printf("enter your last name");
    scanf("%s",lname);

    while((fname[count]>0) && (lname[counter]>0))
    { 
        count++;
        counter++;
    }
    printf("the no of char in ur fname  are %d ",count);
    printf(" the no of char in ur lname are %d ",counter);
}

任何建议都会有很大的帮助。

3 个答案:

答案 0 :(得分:5)

你在同一个循环中计算两者。将其拆分为两个循环。

答案 1 :(得分:2)

正如已经指出的那样,你同时在递增两个计数器 - 你需要将计数分成两个独立的循环(每个字符串一个)

请改为尝试:

while(fname[count] > 0)
{ 
    fnameCount++;
}

while(lname[count] > 0)
{ 
    lnameCount++;
}

printf("the no of characters in your first name is %d ", fnameCount);
printf("the no of characters in your last name is %d ", lnameCount);

答案 2 :(得分:0)

问题是您的变量countcounter都会同时结束并具有相同的值。只要 两个char数组尚未结束,你的if条件就会增加两个计数器。当您到达两个char数组之一的末尾时,两个计数器变量都设置为较短数组的长度。

您需要有两个for循环,每个char数组一个。