gpt4 book ai didi

混淆将字符串作为参数传递给 C 函数

转载 作者:行者123 更新时间:2023-12-02 08:43:35 28 4
gpt4 key购买 nike

void convert(char *str){
int i = 0;
while (str[i]){
if (isupper(str[i])){
tolower(str[i]);
}
else if (islower(str[i])){
toupper(str[i]);
}
i++;
}
printf(str);
}

在该函数中,我尝试反转字符串中每个字母的大小写。我这样调用函数:

convert(input);

其中input是char *类型。我遇到了段错误。这里有什么问题吗?

谢谢!

更新:我的输入来自 argv[1]。

  char *input;
if (argc !=2){/* argc should be 2 for correct execution */
/* We print argv[0] assuming it is the program name */
printf("Please provide the string for conversion \n");
exit(-1);
}
input = argv[1];

最佳答案

这不起作用的原因是您要删除 touppertolower 的结果。您需要将结果分配回传递给函数的字符串:

if (isupper(str[i])){
str[i] = tolower(str[i]);
} else if (islower(str[i])){
str[i] = toupper(str[i]);
}

请注意,为了使其正常工作,str 必须是可修改的,这意味着调用 convert("Hello, World!") 将是未定义的行为。

char str[] = "Hello, World!";
convert(str);
printf("%s\n", str);

关于混淆将字符串作为参数传递给 C 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14420170/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com