大家都知道
%s 用来输出一个字符串的
%c 用来输出一个字符的,空格也算是一个字符
自学过程中遇到的一些新手问题

#include<stdio.h>
int main(void)
{
	char ch;
	
	while(scanf("%c",&ch), ch != 'q')
	{
		printf("你好\n");
	}
	return 0;
}

scanf里的%s %c遇到的一些问题
在while循环里用%c格式字符,会打印两次printf,原来是会吧回车留在了缓存中等会会被while循环执行一次。

#include<stdio.h>
#include<ctype.h>
int main(void)
{
	char ch;
	
	while(scanf("%c",&ch), ch != 'q')
	{
		if(isspace(ch))        
		 //ctype.h头文件里的函数  如果该函数的参数是空白字符,则返回真 
			printf("你好\n");
	}
	return 0;
}

scanf里的%s %c遇到的一些问题
利用ctype.h头文件的函数可以解决打印两次printf的问题,但是这样会比较麻烦。
假如你不记得这个头文件,可以用另外一个方法就是把scanf里的%c格式字符换成%s字符,这样空格就会在字符串里,包括换行,这样更简单。代码如下

#include<stdio.h>
int main(void)
{
	char ch;
	
	while(scanf("%s",&ch), ch != 'q')
	{
		printf("你好!\n");
	}
	return 0;
}

scanf里的%s %c遇到的一些问题
虽然输出结果是一样的,但是比用ctype.h头文件里的函数更容易。

第一次写博客,通过写博客来加深自己的理解。
问题很low,对你没有帮助就不好意思了。
文笔不是很好请见谅。
目前在看C Primer Plus(第六版)。

相关文章: