请问这段代码有什么问题
这段代码有什么问题?@FishC编一个函数void fun(char tt[]),它的功能是:将字符串tt中的大写字母都改为对应的小写字母,其它字符不变。
#include <stdio.h>
void fun(char tt[])
{
int i;
char a;
while(1){
for(int i=0;i<50;i++){
if(a>= 'A'&& a<='Z'){
a+=32;
}
}
break ;
}
}
int main()
{ char tt;
printf("请输入字符串:");
scanf("%s",tt);
fun(tt);
printf("转换后:%s",tt);
} 这段代码的问题在于逻辑错误和语法错误。
首先,循环中的条件应该是`i < strlen(tt)`而不是`i= 'A' && a <= 'Z'`,因为我们要遍历整个字符串tt。
其次,循环中的变量i在外部已经声明了,所以在for循环中再次声明会导致重复定义的错误。可以直接使用外部的i。
最后,函数内部创建了一个新的字符数组a,并没有将结果返回给原始字符串tt。可以直接在原始字符串上进行修改。
以下是修正后的代码:
#include <stdio.h>
#include <string.h>
void fun(char tt[])
{
for (int i = 0; i < strlen(tt); i++) {
if (tt >= 'A' && tt <= 'Z') {
tt += 32;// 将大写字母改为小写字母
}
}
}
int main()
{
char str;
printf("请输入字符串:");
gets(str);
fun(str);
printf("转换后的字符串为:%s\n", str);
return 0;
}
在这里我们使用到了C语言的字符串操作函数strlen()来获取字符串的长度,并且输入字符串使用了gets()函数,避免了空格等特殊字符的问题。最后,通过主函数打印出了转换后的字符串。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]