我有一个简单的程序,它分别读取输入的名字和姓氏,并显示每个字符中存在的字符数,但我得到的值都是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);
}
任何建议都会有很大的帮助。
答案 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)
问题是您的变量count
和counter
都会同时结束并具有相同的值。只要 两个char数组尚未结束,你的if条件就会增加两个计数器。当您到达两个char数组之一的末尾时,两个计数器变量都设置为较短数组的长度。
您需要有两个for
循环,每个char数组一个。