所以我需要做一個字符串大寫+刪除它的空格。然而,它不起作用,如果字符串包含數字,最終的打印輸出一些非ASCII字符。我應該如何使它工作?我試圖用函數isalpha()
和isdigit()
來完成,但結果是一樣的。c - 如何使整個字符串大寫,如果它包含數字?
#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字符。」 - 這不是你的代碼在做什麼。你的代碼,對於你在問題中輸入的字符串,會進入一個無限循環。請決定*您需要哪些*代碼幫助。這是代碼嗎?然後使問題文本與代碼的行爲相匹配。它是一些其他的代碼?然後發佈一些其他代碼。 – hvd
你不*需要使數字成爲特例。 ['toupper'](http://en.cppreference.com/w/c/string/byte/toupper)只會改變字母字符,並保持所有其他字體不變。 – usr2564301
@hdv你是對的,我有點期待那部分應該不讓空間進入新字符串的工作。無限循環是由if(str [i]!=''){,你會有什麼建議? –