用getchar()来读取scanf()的缓存时遇到的问题,如果字符串以i或n开头会出错。

mathkkking 发布于 2015/10/19 21:12
阅读 68
收藏 0
/*
 ============================================================================
 Name        : test_scanf_buff_AND_getchar_with_I_n.c
 Description : Hello World in C, Ansi-style
 ============================================================================
 */

#include <stdio.h>
#include <stdlib.h>

int main(void) {
	puts("练习 scanf() buff and getchar i &n"); /* prints 练习 scanf() buff and getchar i &n */

	int d=0;
	float f=2.0;
	char ch='n';

	scanf("%f",&f);	/*此处输入字符串时*/
	scanf("%d",&d);
	printf("d is %d f is %f\n",d,f);

	scanf("%f",&f);
	ch=getchar();        /*读取缓存,此处出问题*/
	printf("ch is %c f is %f\n",ch,f);
	return EXIT_SUCCESS;
}



如果第一个scanf()时输入的是字符串的时候,如果字符串以i开头,例如iabcdefg,getchar()出ch赋值为'b',也就是第三个字符;如果字符串以n开头,例如nabcdefg,getchar()处ch赋值为'c',也就是第四个字符。当字符串以其他字符开始时,例如abcdefg,getchar()处ch的赋值为'a',即字符串的第一个字符。

加载中
返回顶部
顶部