【发布时间】:2014-05-17 16:52:04
【问题描述】:
这是我的目标:
输入:混合 ASCII 字符(大写、小写、数字、空格)的字符串
输出:只有大写字符的字符串
我有这个:
#include <stdio.h>
void csere(char s[]){
int i;
for(i=0; s[i]!='\0'; i++){
if('a'<=s[i] && s[i]<='z'){
s[i]-=32;
}
printf("%c", s[i]);
}
}
void main(){
char s[1];
scanf("%s", &s);
csere(s);
}
我的问题是:
函数在字符串中的第一个“空格”字符处停止。 我试图将 'for' 部分中的 s[i] != '\0' 更改为 i
示例:qwerty --> QWERTY,但 qwe rty --> QWE
(小问题:程序只接受长度小于 12 的字符串,如果我在 main 函数中将 1 更改为 0。)
感谢您的帮助。抱歉英语不好。
【问题讨论】:
-
两个友好的建议:1)不要使用
void main(),使用int main(),如标准所说; 2) 您可能想使用ctype.h中的toupper(character)将字符变为大写。 -
第三个:用英语编写和注释您的代码(
csere是匈牙利语,请改用swap或changecase) -
@PeterVaro!感谢您的建议。