gpt4 book ai didi

c - 如何在C中将字符串(char *)转换为大写或小写

转载 作者:太空狗 更新时间:2023-10-29 16:12:07 25 4
gpt4 key购买 nike

我有一个结构:

typedef struct entry {
char *surname;
int house_no;
char *postcode;
} BEntry;

和一个将字符串转换为大写的函数:

void toUpper(char *str){
while (*str != '\0')
{
*str = toupper(*str);
str++;
}
}

在我的主要函数中,我为结构成员赋值并希望将姓氏转换为大写:

mentry->surname = "bob";
mentry->house_no = 17;
mentry->postcode = "GK116BY";
toUpper(me->surname);

通过将 char 指针传递给这样的函数,将字符串转换为大写的正确方法是什么?我的程序返回一个段错误。非常感谢任何帮助,谢谢。

最佳答案

您的 toUpper() 实现应该可以正常工作。但是,您应该注意编译器的警告(或者如果您没有收到任何警告,请调高警告级别 - 当您将字符串文字分配给 char * 时,您应该会看到一些东西,例如那)。字符串文字是 const,即它们不能被修改。当您尝试写入它们时,这将导致您看到的段错误。

你需要这样的东西:

mentry->surname = malloc(4);
strcpy(mentry->surname, "bob");

或者更方便,但不是 C 标准方式的一部分:

mentry->surname = strdup("bob");

当然,无论哪种方式,请务必稍后调用 free()

关于c - 如何在C中将字符串(char *)转换为大写或小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26786951/

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