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 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退