如何在c中填充字符数组?
这里怎么了 我想检查char数组中的char是否为lower,因此如果是,则应更改为大写如何在c中填充字符数组?,c,arrays,toupper,C,Arrays,Toupper,这里怎么了 我想检查char数组中的char是否为lower,因此如果是,则应更改为大写 #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] = touppe
#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;
}
#包括
int main(int argc,char*argv[]){
char-arr[100];
scanf(“%s”和&arr);
对于(int i=0;i添加声明islower
和toupper
的标题
#include <ctype.h>
不正确。请删除int
if(islower(arr[i])){
您缺少一个include#include
你也不需要你的if
语句。在内部处理(如果你真的想保持islower
删除if
语句中的int
。这里出了什么问题
行:if(int islower(arr[i]){
因错误表达式编译失败。
更改为:if(islower(arr[i]){
在这一行中,您的代码可能会超出它应该考虑的范围:
for(int i=0;i<sizeof(arr);i++){
for(int i=0;i要正确测量字符串的长度,请使用strlen
,而不是sizeof
for(int i=0;i<strlen(arr);i++){ // Don't use sizeof on this line
for(int i=0;iIt不需要先测试是否为小写。toupper
不会做任何事情,除非有事情要做。语法是什么:if(int islower(arr[i])…
?为什么int
?另外,请注意,toupper
将在没有大写等效字符的情况下再次返回相同的字符(阅读文档!)。因此您根本不需要if
语句。您的代码有什么问题?什么不起作用?您正在访问数组的未初始化元素。您应该将循环限制为strlen(arr)
,而不是sizeof(arr)
。使用scanf(“%s”、&arr);
在三个方面是错误的:(1)您应该限制输入(%99s”
),(2)您不应该使用&
,因为它传递一个char(*)[100]
,其中需要char*
,并且(3)在使用结果之前,您应该检查scanf()
报告的返回值是否为1。
|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++){
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;
}