这里有什么不对吗?
我想检查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;
}
答案 0 :(得分:3)
要正确测量字符串的长度,请使用strlen
,而不是sizeof
for(int i=0;i<strlen(arr);i++){ // Don't use sizeof on this line
这是一个更简单的版本:
#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;
}
甚至:
#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;
}
答案 1 :(得分:2)
您缺少包含routes.MapRoute(
name: "Perfil",
url: "Pages/{id}",
defaults: new { controller = "Pages", action = "Index", id = UrlParameter.Optional }
);
此外,您不需要#include <ctype.h>
声明。 toupper
会在内部处理(如果您真的希望if
删除islower
声明中的int
。
答案 2 :(得分:1)
添加声明islower
和toupper
的标头。
#include <ctype.h>
另外,
if(int islower(arr[i])){
不对。删除int
。
if(islower(arr[i])){
答案 3 :(得分:1)
这里有什么不对吗?
行:if(int islower(arr[i])){
因错误表达而无法编译
更改为:if(islower(arr[i])){
在你的代码中的这一行可能会超出它应该的位置:
for(int i=0;i<sizeof(arr);i++){
因为您可能正在查看字符串终止符之后的空格:
|s|t|r|i|n|g|\0|<unknown contents here, part of your legal memory, but are not part of the string>
应该:
int len = strlen(arr);
for(int i=0;i<len;i++){