C卡在无限循环中

时间:2013-11-20 15:28:07

标签: c loops terminal

我有这个简单的程序,我想自己测试它,它基本上从终端字符读取并计算已输入多少个小写字符。

在我调用的函数中,它似乎只是在循环中永远运行。

/*
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);
}

3 个答案:

答案 0 :(得分:2)

你忘了增加i变量......

答案 1 :(得分:2)

您永远不会在i函数中增加CopyMe,因此while循环永远不会终止,始终处理a[0]

答案 2 :(得分:1)

您没有在i中增加CopyMe

void CopyMe(char a[])
{
    int lowercase = 0;
    int i=0;
    while ( a[i] != '\0')
    {
        if (a[i] >= 'a' && a[i] <= 'z')
        {
            lowercase++;
        }
        i++; // <------- Don't forget about meeeeeee!!!
    }
    printf("Lowercase: %d \n", lowercase);
}