gpt4 book ai didi

c - scanf 并且没有执行 switch case

转载 作者:太空宇宙 更新时间:2023-11-04 05:40:24 24 4
gpt4 key购买 nike

C 中的新蜜蜂。这是我的代码(它替换字符串中的字符):

#include <stdio.h>
#include <string.h>
#include <conio.h>

void main()
{
char str[100], r, ra;
printf("enter string");
gets(str);
int length;
length= strlen(str);
printf("length of string is %d",length);
printf("\nenter the the character that will replace");
scanf("%c",&r);
printf("where to replace\n b...begning\ne....ending\np....position");
scanf("%c",&ra);
int pos;
switch(ra)
{
case 'b' : str[1]=r; break;
case 'e' : str[length-1] = r; break;
case 'p' : printf("enter position");
scanf("%d",pos);
if(pos<1 || pos>length-1)
printf("please enter a position between 1 and %d",length-1);
else
str[pos]= r;
break;
}
printf("\n after replacing string is %s", str);
getche();

}

问题是IDE没有编译这部分程序,我知道我做错了什么,但想不通是什么?请需要帮助。

    scanf("%c",&ra);
int pos;
switch(ra)
{
case 'b' : str[1]=r; break;
case 'e' : str[length-1] = r; break;
case 'p' : printf("enter position");
scanf("%d",pos);
if(pos<1 || pos>length-1)
printf("please enter a position between 1 and %d",length-1);
else
str[pos]= r;
break;
}

最佳答案

使用 scanf("%c",&ra) 代替 "%c"。因为使用 "%c" 读取会在 ra 中给出一个垃圾值。该值是新行。

当您在 a 中输入值时,您按 p 之类的键,然后按 Enter 键。此 Enter key 仍保留在 stdin 流中。

下次当您在 ra 中读取时,stdin 流中的 Enter key 将在 ra 中返回。

因此,要删除该 Enter key,您需要阅读 "%c"

关于c - scanf 并且没有执行 switch case,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20537347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com