这里有什么问题吗?
我想检查char数组中的char是否较低,因此如果是,则应将其更改为大写。
#include <stdio.h>
int main(int argc, char *argv[]) {
char arr[100];
scanf("%s",&arr);
for(int i=0;i<sizeof(arr);i++){
if(int islower(arr[i])){
arr[i] = toupper(arr[i]);
}
}
printf("%s",arr);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
要正确测量字符串的长度,请使用strlen,而不是sizeof
for(int i=0;i<strlen(arr);i++){ // Don't use sizeof on this line
Run Code Online (Sandbox Code Playgroud)
这是一个更简单的版本:
#include <stdio.h>
#include <ctype.h>
int main(int argc, char *argv[]) {
char arr[100];
scanf("%s", arr);
for(int i=0;i<strlen(arr);i++){
arr[i] = toupper(arr[i]);
}
printf("%s",arr);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
甚至:
#include <stdio.h>
#include <ctype.h>
int main(void) {
char arr[100];
scanf("%s", arr);
for(char* c=arr; *c=toupper(*c); ++c) ;
printf("%s",arr);
return 0;
}
Run Code Online (Sandbox Code Playgroud)