gpt4 book ai didi

c - 如何在c中通过将小写字母更改为大写字母和大写字母来反转两个字符串之间的整数

转载 作者:行者123 更新时间:2023-11-30 20:56:36 27 4
gpt4 key购买 nike

我有一个输入字符串,例如:“Hello 12345 WoRlD”我想将其输出为: "hELLO 54321 wOrLd"

1)这里小写应该转换为大写,反之亦然

2)反转两个字符串之间的整数

执行后只会打印第一个字符串,其余输出消失

这是我到目前为止所做的尝试

#include<stdio.h>
#include<string.h>
char* casechange(char *);
main()
{
char s[30],*p,*q;
int i,j;
printf("Enter string data:");
scanf("%s",s);
q=casechange(s);
printf("Manipulated string data:%s\n",s);
}
char* casechange(char *s)
{
int i,j=strlen(s)-1,num;
for(i=0;s[i];i++)
{
if(s[i]>='a'&&s[i]<='z')
{
s[i]-=32;
}
else if(s[i]>='A'&&s[i]<='Z')
{
s[i]+=32;
}
}
if(s[i]>='0'&&s[i]<='9'&&s[j]>='0'&&s[j]<='9')
//for(i=0;i<j;i++,j--)
//{
{
num=s[i];
s[i]=s[j];
s[j]=num;
}
//}
return s;
}

如何实现这一点?

最佳答案

“执行后只会打印第一个字符串,其余输出消失”的问题是:

scanf("%s",s);

scanf() '%s' 格式字符串告诉 scanf 读取字符串,但只读取第一个空格。因此,如果您输入:

 "Hello 12345 WoRlD"

scanf("%s", s) 只会将“Hello”复制到 's' 中。

要解决此问题,请更改:

scanf("%s",s);

对此:

fgets(s, sizeof(s), stdin);

但是,fgets() 可能会在字符串末尾留下不需要的“\n”。可以通过在 fgets() 之后插入以下代码来消除不需要的 '\n':

q=strchr(s,'\n');
if(q)
*q = '\0';

那么输出将是:

"hELLO 12345 wOrLd"
<小时/>

剧透警告!

查看我的版本 'casechange()' ,这也会反转数字。

关于c - 如何在c中通过将小写字母更改为大写字母和大写字母来反转两个字符串之间的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23687334/

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