m0_69904588 2022-07-06 23:49 采纳率: 100%
浏览 17
已结题

关于#ar#的问题,如何解决?

问题遇到的现象和发生背景

scanf("%c",&ch)以及getchar()的意思没搞懂

问题相关代码,请勿粘贴截图

//编码及注释:Code_流苏
//头文件定义
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
//主函数
int main()
{
//定义字符类型变量 ch 用于输入需查找的字符
char ch;
//定义字符数组 用于输入存储字符串
char str[81];
//提示
printf("请输入你要在字符串中查找的字符:\n");
//输入要查找的字符
scanf("%c",&ch);
//接收一个字符 此处接收的为回车字符
getchar();
//提示
printf("请输入字符串:\n");
//输入字符串
gets(str);//gets(str)也可以改为scanf("%s",str);
//借助string.h字符串函数库strlen函数求字符串长度
//并定义一个整数类型变量 来存储字符串的长度
int len=strlen(str);
//定义i 用于循环
int i;
//定义flag 用于标志状态
int flag=0;
//循环遍历查找
for(i=len-1;i>=0;i--)
{
//判断字符与字符串中哪个位置对应的字符相等
if(str[i]==ch)
{
flag=1;break;//如果找到了相等的标志为1
}
}
if(flag==0)printf("查找失败\n");//没找到flag仍为0,输出查找失败
else printf("字符所在位置下标为:\n%d\n",i);//找到 flag=1,输出位置
//返回0,代表程序执行结束
return 0;
}

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

2条回答 默认 最新

  • 滴水不穿石 2022-07-07 00:42
    关注

    scanf在读取单个字符时,会把换行符(你按回车键时)读取存入缓冲区,如果不把缓冲区的这个换行符取出丢弃(用getchar函数读取但不赋值给任何变量,就是丢弃),会影响下次读取字符或字符串,因为这个缓冲区的换行会被自动存入对应变量,导致后面用户无法再手动输入。若一开始就是读取字符串时,则不存在这种现象。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月15日
  • 已采纳回答 7月7日
  • 创建了问题 7月6日

悬赏问题

  • ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并—
  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址