gpt4 book ai didi

在 C 中将字符指针转换为大写

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

我有一个指针:

char * name;

它包含字符串“test:case”

我正在用它调用另一个函数,并尝试将其存储在结构中。但是,我想先将整个字符串大写,但它似乎不起作用。

void func(char * name) {
int i;
List * l;

l = malloc(sizeof(List));

for(i=0; i< strlen(name); i++) {
name[i] = toupper(name[i]);
}

l->name = name;
//CALL A FUNCTION TO LATER FREE ALLOCATED MEMORY
}

其中 List 是一个具有名为 name 的成员 (char *) 的结构。然而,这会出现段错误。在我的例子中,我不能使用非指针。由于我必须使用指针而不是字符数组,因此我尝试在 char 指针的每个值中使用 toupper,但这似乎不起作用。

最佳答案

您会遇到段错误,因为原始字符串可能是文字,并且不可修改。您需要先复制一份。

void func(char * name) {
List * l;

l = malloc(sizeof(List));

name = strdup(name); // make a copy of name
for (char *p = name; *p; p++) {
*p = toupper(*p);
}

l->name = name;
}

请注意,当您稍后释放 l 时,您首先需要释放 l->name

关于在 C 中将字符指针转换为大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35236272/

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