【发布时间】:2016-10-29 11:38:40
【问题描述】:
所以我需要将字符串设为大写 + 从中删除空格。但是它不起作用,如果字符串包含数字,则最终打印会打印一些非 ascii 字符。我应该如何使它工作?我尝试使用函数isalpha() 和isdigit() 来做,但结果是一样的。
#include <stdio.h>
#include <ctype.h>
int main(){
int i = 0;
char c[100];
char str[] = "Hello8 world";
while(str[i]){
if (str[i]!=' '){
if (str[i] >= '0' && str[i] <= '9'){
c[i]=str[i];
}
else{
c[i]=(toupper(str[i]));
}
i++;
}
}
printf("%s", c);
return(0);
}
【问题讨论】:
-
"但是它不起作用,如果字符串包含数字,最终打印会打印一些非 ascii 字符。" -- 那不是你的代码在做什么。对于您在问题中输入的字符串,您的代码进入了一个无限循环。请确定您需要帮助的哪些代码。是这个代码吗?然后使问题文本与代码的行为相匹配。是其他代码吗?然后发布一些其他代码。
-
您确实不需要需要将数字设为特殊情况。
toupper只更改字母字符,其他所有字符保持不变。 -
@hdv 你是对的,我有点期待应该不让空间进入新字符串的部分工作。无限循环是由 if (str[i]!=' '){ 引起的,你有什么建议?
-
@AnetaKožoušková,你为什么不使用按位运算?它快速而优雅。