C - 返回第一个非空白字符

时间:2012-11-30 14:26:46

标签: c char ascii whitespace

我被要求编写一个函数,该函数返回输入字符串中的第一个非空白字符。

当我输入类似“你好”的东西或任何不以白色空格开头的东西时,它正在工作。但是当我输入“hello”之类的东西时,它会返回一个空格。

这是我的代码:

int question6()
{
    printf("Start typing stuff in \n");
    char myChar = returnFirstNonWhite();

    printf("First non-white space character is: %c",myChar);
}

int returnFirstNonWhite()
{
    int ch,temp;
    ch = getchar();
    while (ch != 32)
    {
        temp = ch;
        printf("Found first success %c\n", ch);
    }
    return temp;
}

4 个答案:

答案 0 :(得分:2)

ch = getchar();
while (ch == 32)
{
    ch = getchar();
}
return ch;

答案 1 :(得分:1)

一个简单的选择是使用scanf()代替getchar()scanf()将采用一个字符串(因此不需要循环获取字符)并且它将剥离任何起始空格,因此您只需要抓住它所拥有的第一个字符。

int returnFirstNonWhite()
{
    char str[50];
    memset(str, '\0', 50);
    scanf("%s", str);
    return str[0];
}

所以

>>      hello

将返回104(ascii' h')

答案 2 :(得分:0)

首先,您只需输入一个字符。如果它不等于32 int值,程序应该处于无限循环中!这是一个无关紧要的代码。

答案 3 :(得分:0)

这里的所有内容似乎都没问题,除了在while循环中你不会继续获取下一个字符。换句话说,它获取初始字符,比如说空格,然后永远继续while循环,因为ch变量永远不会改变。

尝试在while循环中添加ch = getchar();,以便不断获取要检查的下一个字符。另外,我刚刚意识到你需要检查字符是否等于为32,而不是不等于,这样如果字符是空格,它将继续获取下一个字符。