gpt4 book ai didi

c - 反转字符串的 C 程序

转载 作者:行者123 更新时间:2023-11-30 20:21:32 25 4
gpt4 key购买 nike

我用C语言编写了一个程序,询问用户的姓名并输出字母的数量,并再次询问用户是否希望将其姓名颠倒过来,如果他的回答是"is",则程序输出颠倒后的姓名。问题是我不知道为什么我丢失了数组名称中的第一个字母你可以试试这个代码。我认为 scanf 是问题的根源。

#include <stdio.h>

int main(){
char name[30],reponse[3],response[3]="yes",temp;
int j,i,t=0,k;
printf("would you share with us your name ? \n");
scanf("%s",name);
printf("so your name is %s\n",name);
for(i=0;i<=30;i++){
if(name[i]!='\0') t++ ;
else break;
}
printf("the number of letters in your name is %d\n",t);
printf("do you want your name to be scrumbled ?\n");
scanf("%s",reponse);// I think the problem is here
for(j=0;j < 3;j++){
if(response[j]!=reponse[j]) break;
}
if(j==3){
k = t/2;
for(i=0; i<k;i++){
temp=name[i];
name[i]=name[t-i-1];
name[t-i-1]=temp;
}
printf("your new name is %s hahaha ",name);
}
else printf("OK");
return 0;
}

最佳答案

问题似乎在于,当用户输入存储在数组 reponse[3] 中的字符串 "yes" 时,字符串的终止零会被覆盖数组 name 中的第一个字符。也就是说,编译器将变量name放置在内存中变量reponse之后。

您应该将数组 reponse 声明为至少包含四个字符,并在函数 scanf 的格式说明符中使用字段长度。

例如

char name[30],reponse[4],response[3]="yes",temp;
^^^

//...

scanf("%3s",reponse);
^^^^

输入字符串的更安全方法是使用标准 C 函数 fgets

关于c - 反转字符串的 C 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42541945/

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