-1

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

当我输入诸如“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

4 回答 4

2
ch = getchar();
while (ch == 32)
{
    ch = getchar();
}
return ch;
于 2012-11-30T14:31:32.543 回答
1

一个简单的选择是使用scanf()而不是getchar(). scanf()将采用一个字符串(因此无需循环获取字符),它将去除任何起始空白,因此您只需要获取它具有的第一个字符。

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

所以

>>      hello

将返回 104 (ascii 'h')

于 2012-11-30T14:45:44.380 回答
0

起初,您只输入一个字符。而且如果不等于32 int值,程序应该是无限循环的!!!这是一个无代码。

于 2012-11-30T14:31:54.013 回答
0

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

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

于 2012-11-30T14:32:12.510 回答