我有这个简单的程序,我想测试自己,它基本上从终端字符读取并计算输入了多少个小写字符。C被困在无限循环中
在我调用的函数中,它看起来只是在循环中永远运行。
/*
Create a function that reads the number of lower case letters from the user
*/
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
void CopyMe(char []);
main()
{
char letters [100];
int i = 0;
do
{
letters [i++] = getchar();
}
while (letters [i-1] != '\n');
letters [i-1] = '\0';
CopyMe(letters);
printf("Done \n");
system("pause");
return 0;
}
void CopyMe(char a[])
{
int lowercase = 0;
int i=0;
while (a[i] != '\0')
{
if (a[i] >= 'a' && a[i] <= 'z')
{
lowercase++;
}
}
printf("Lowercase: %d \n", lowercase);
}
使用调试器分步循环。原因应该很快变得清晰。 –
你不能用'for(i = 0; i
ugoren
无论何时,一个循环似乎“永远运行”,你可能会很好地检查循环的条件,并确定循环体内的任何东西是否会改变它。 – WhozCraig