寒假练习:习题8-6删除字符

代码如下:

#include<stdio.h>
#define MAX 20
void delchar(char* str, char c)
{
int i=0;
int j=0;
  while (str[i] != '\0')//str[i]表示原来的字符串,指针变量str与数组首地址str等价;
{
if (str[i] != c)
{
 str[j++] = str[i];//str[j++]也是一直往后走的
}
i++;
}
str[j] = str[i];//将'\0'赋上;
}
int main()
{
char str[MAX], c;
printf("输入需要删除的字符\n");
scanf("%c", &c);
getchar();//清除缓存中的'\0' ,保证输入字符c后,程序能继续输入字符串; 
printf("输入字符串\n");
gets(str); //因为用scanf输入字符串是遇到空格和'\0'会直接结束,所以使用gets;?
delchar(str, c);
printf("输出字符串%s\n", str);
return 0;
}

学习笔记,关于getchar()函数

作用之一:可以使用getchar()去清理回车;

以下面代码为例

#include <stdio.h>
int main(void)
{
char m[40];
char n;
printf("输入字符串:\n");
scanf("%s",m);
getchar();
printf("输出字符串:%s\n",m);
printf("输入字符串中的一个字符 :\n");
scanf("%c",&n);
printf("输出字符串中的字符:%c\n",n);
return 0;
}

若去掉getchar();

原理:当我们在控制台缓存区输入abc并按下回车时,相当于输入了'a','b','c'和回车(enter)四个字符

当输出字符串abc时,还有一个字符-回车(enter)还没有输出,它保存在控制台输入的缓冲区,而字符串abc着保存在了缓冲区(注意控制台输入的缓冲区和缓冲区不同),所以当进行到下一个scanf函数时,控制台输入的缓冲区中的回车(enter)输入到了这个scanf函数里了,取代了本该输入的字符,造成了第二种结果。

而getchar()函数的作用就是清除掉abc后面的缓存(回车enter),保证字符的输入。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呼啦啦的风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值