Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在c中填充字符数组?_C_Arrays_Toupper - Fatal编程技术网

如何在c中填充字符数组?

如何在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

这里怎么了

我想检查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] = 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;
}