gpt4 book ai didi

c - 在C中的void函数中将数组项和大写字母排序为小写字母

转载 作者:行者123 更新时间:2023-11-30 18:10:19 26 4
gpt4 key购买 nike

我必须创建 void 函数,根据 ASCII 值对数组中的项目进行排序。在将所有大写字母与小写字母进行比较时,我必须进行更改。

我编写了一个代码,对数组的项目进行排序:

int compareWords(const void *a, const void *b) {
const char *first = *(const char **) a;
const char *second = *(const char **) b;
return strcmp(first , second);
}



void sortWsmallLetters(char **listOfWor, int count) {
qsort(listOfWor, count, sizeof(char *), compareWords);

}

但我不知道如何将数组中的这些大写字母更改为小写字母。

最佳答案

在 POSIX 中,这是微不足道的。您可以使用strcasecmp:

#include <strings.h>

int compareWords(const void *a, const void *b) {
return strcasecmp(a, b);
}

void sortWsmallLetters(char **listOfWor, int count) {
qsort(listOfWor, count, sizeof(char *), compareWords);
}

对于其他平台,您必须自行推出(或使用 Windows 的 stricmp)。这是my implementation进行一些更改以满足要求:

#include <ctype.h>

int strcasecmp(const char *str1, const char *str2)
{
const unsigned char *s1 = (const unsigned char *)str1,
*s2 = (const unsigned char *)str2;
while(*s1 && *s2)
{
if(tolower(*s1) != tolower(*s2))
return tolower(*s1) - tolower(*s2);
s1++; s2++;
}

return 0;
}

如果您想修改函数内的字符串...您确实不应该,但可以...

#include <ctype.h>

int strcasecmp_modify(const char *str1, const char *str2)
{
const unsigned char *s1 = (const unsigned char *)str1,
*s2 = (const unsigned char *)str2;
while(*s1 && *s2)
{
*s1 = tolower(*s1);
*s2 = tolower(*s2);
if(*s1 != *s2)
return *s1 - *s2;
s1++; s2++;
}

return 0;
}

关于c - 在C中的void函数中将数组项和大写字母排序为小写字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58477780/

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