字符串大小写问题(只求怎么改)



#include
int main()
{char a[100];
int i;
gets(a);
for(i=0;a[i]!='\0';i++)
{if(a[i]>='a'&&a[i]<='z')
a[i]-=32;
}puts(a);
return 0;
} 

字符串小写变大写,不知道哪错了,只求怎么改

gets函数好像已经被弃用了吧,用gets_s替代:

#include <stdio.h>

int main()
{
    char a[100];
    int i;
    gets_s(a);  // 用gets_s
    for (i = 0; a[i] != '\0'; i++)
    {
        if (a[i] >= 'a' && a[i] <= 'z')
            a[i] -= 32;
    }
    puts(a);
    return 0;
}

这段代码没什么问题,什么错误提示?

建议你可以更改如下:1.把gets函数改为scanf或者fgets;2.使用if(a[i]>='A' && a[i]<='Z');3.当a[i]为空格时,略过不处理。希望这能帮到你!
具体的代码
将文字改为大写的代码可以改为:


#include<stdio.h>
int main() 
{ 
    char a[100]; 
    int i; 
    scanf("%s", a); 
    for(i=0;a[i]!='\0';i++) 
    {
        if(a[i]>='A'&&a[i]<='Z') 
            a[i]=a[i];
        else if(a[i]>='a'&&a[i]<='z') 
            a[i]-=32; 
    } 
    puts(a); 
    return 0; 
}




```

32改0x30