字符串输入
scanf("%c",&ch);while(ch!='\n')
{
memset(a, 0, sizeof a);
for(i=0;ch!=' '&&ch!='\n';i++)
{
scanf("%c",&ch);
a=ch;
}........
}
我想以空格为分隔处理字符串,输入结束标志为回车,这样输入为什么不成功?
{:10_286:} 本帖最后由 jackz007 于 2022-10-18 21:07 编辑
因为判断滞后,这个代码是先把字符写入数组,然后,才判断被写入数组的字符是否是空格或者换行符。正确的顺序当然是先判断,符合条件才写入喽。
试试下面的代码
#include <stdio.h>
#include <string.h>
int main(void)
{
char ch , a ;
int i ;
memset(a , 0 , sizeof a) ;
for(i = 0 ; scanf("%c" , & ch) == 1 && ch != ' ' && ch != '\n' ; a = '\0') a = ch ;
puts(a) ;
} jackz007 发表于 2022-10-18 21:01
因为判断滞后,这个代码是先把字符写入数组,然后,才判断被写入数组的字符是否是空格或者换行符。 ...
scanf("%c" , & ch) == 1
这句代码是在判断什么?还有后面为什么要将a=‘\0’{:10_277:} 萨西摩尔·槿花 发表于 2022-10-19 19:39
scanf("%c" , & ch) == 1
这句代码是在判断什么?还有后面为什么要将a=‘\0’
scanf() 函数的返回值是 1 啊,代表 scanf() 成功完成了一个参数的读取。至于后面,当然是在判断这次读取到的是否是空格或者回车符啊,如果不是,那就继续。 jackz007 发表于 2022-10-19 19:48
scanf() 函数的返回值是 1 啊,代表 scanf() 成功完成了一个参数的读取。至于后面,当然是在判断 ...
感谢
页:
[1]