我被要求编写一个函数,该函数返回输入字符串中的第一个非空白字符。
当我输入类似“你好”的东西或任何不以白色空格开头的东西时,它正在工作。但是当我输入“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;
}
答案 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,而不是不等于,这样如果字符是空格,它将继续获取下一个字符。