gpt4 book ai didi

c - tolower 函数输出错误

转载 作者:行者123 更新时间:2023-11-30 16:54:58 25 4
gpt4 key购买 nike

我的 tolower 功能有问题。尝试将其与 argv 一起使用,但输出为 $0@。我的代码有什么问题吗?

#include <stdlib.h>
#include <stdio.h>

void makeLower(char *s) {
int i;
for(i = 0; s[i] != '\0'; i++){
s[i] = tolower(s[i]);
}
printf("%s", s);
}

int main(int argc, char *argv[]) {
argv[0]="A";

makeLower(argv);
return 0;
}

最佳答案

argv 是一个指向指针的指针,它是一个char**。但该函数需要一个char*。所以,你需要像这样传递:

makeLower(argv[0]);

但这不会起作用,因为 argv[0] 现在指向一个字符串文字。修改字符串文字是 undefined .

而是传递一个可修改的数组,例如:

int main(int argc, char *argv[]) {
char arr[] = "A";

makeLower(arr);
return 0;
}

另一个选项是复制传递的字符串文字(通过argv[0]),然后您就可以修改它。基本上,这个想法是你不能合法地修改 C 中的字符串文字。

关于c - tolower 函数输出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40442429/

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