一点学习心得

在用C语言写一种功能——替换字符串中某个字符
连续两次输入被替换字符和替换字符,必须要清空缓冲区
加入这行代码:setbuf(stdin,NULL);
则可以解决这个问题

/*
2020年6月21日20:02:05
*编写函数 replace(char *s,char c1,char c2)
实现将 s 所指向的字符串中所有字符 c1 用 c2 替换,
字符串、字符 c1 和 c2 均在主函数中输入
将原始字符串和替换后的字符串输出
*/
#include 

void replace(char *str,char c1,char c2)
{
	char *p=str;
	while(*p)
	{
		if(*p==c1)
			*p=c2;
		p++;
	}

}
main()
{
	char str[100],c1,c2;
	printf("请输入一个字符串:");
	gets(str);
	printf("原字符串为:");
	puts(str);
	printf("请输入一个要被替换的字符:");
	scanf("%c",&c1);
	printf("请输入一个替换字符:");
	setbuf(stdin,NULL);   //注意:必须清理输入缓冲区
	scanf("%c",&c2);
	replace(str,c1,c2);
	puts(str);
	return 0;
}

输出结果:
一点学习心得_第1张图片
如若不加清空缓冲区的代码,如下所示:

/*
2020年6月21日20:02:05
*编写函数 replace(char *s,char c1,char c2)
实现将 s 所指向的字符串中所有字符 c1 用 c2 替换,
字符串、字符 c1 和 c2 均在主函数中输入
将原始字符串和替换后的字符串输出
*/
#include 

void replace(char *str,char c1,char c2)
{
	char *p=str;
	while(*p)
	{
		if(*p==c1)
			*p=c2;
		p++;
	}

}
main()
{
	char str[100],c1,c2;
	printf("请输入一个字符串:");
	gets(str);
	printf("原字符串为:");
	puts(str);
	printf("请输入一个要被替换的字符:");
	scanf("%c",&c1);
	printf("请输入一个替换字符:");
	scanf("%c",&c2);
	replace(str,c1,c2);
	puts(str);
	return 0;
}

输出结果:
一点学习心得_第2张图片
由此对比可见,在编程时,清空缓冲区对输出结果有着非常大的影响。
在接下来的学习中要谨记!!!

你可能感兴趣的:(一点学习心得)