c - 将一个 char 数组分配给另一个,它也是 c 中函数的参数

标签 c arrays char parameter-passing

我运行此代码并每次都会关闭控制台。

你能帮我吗?谢谢

int lower(int a) 
{
    if ((a >= 0x41) && (a <= 0x5A))
        a |= 0x20; 
    return a;  
}
void get_lower_case(char** str)
{
    int str_len = strlen(*str);
    char *temp = (char *)malloc(str_len);

    while (**str)
    {
        *temp =lower(**str);
        temp++;
        *str++;
    }
    strncpy( *str, temp, str_len);
    free(temp);
}
int main()
{
char searchChars[] = "findstring";
get_lower_case(&searchChars);

return (0);
}

或者还有其他方法可以更改 char 数组作为参数吗?

最佳答案

继续注释,不需要将指向 char 的指针传递给 get_lower_case 。您在searchChars中有一个可修改的字符串,因此只需传递字符串并对其中的字符进行操作即可。您将大大简化向小写字母的转换。

此外,不要在代码中使用魔数(Magic Number),例如(a >= 0x41) && (a <= 0x5A) , (a >= 'A') && (a <= 'Z')更容易阅读。您可以保留0x2032 .

将各个部分放在一起,您可以执行如下操作:

#include <stdio.h>

int lower(int a) 
{
    if ((a >= 'A') && (a <= 'Z'))
        a |= 0x20;
    return a;  
}

void get_lower_case (char *str)
{
    while (*str) {
        *str = lower(*str);
        str++;
    }
}

int main (void)
{
    char searchChars[] = "FINDstring";
    get_lower_case(searchChars);
    printf ("%s\n", searchChars);

    return (0);
}

示例使用/输出

$ ./bin/tolower
findstring

关于c - 将一个 char 数组分配给另一个,它也是 c 中函数的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46067731/

相关文章:

php - JSON解析用PHP获取信息

在 C 中创建外部字符数组

c - 关于具有左节点、右节点和父节点的树数据结构的教程

c - 在 Mac OS X 上获取默认电子邮件地址

javascript - 如何获得分割字符串 "/"和 "/something"的不同长度

oracle - 如何在 Oracle 中将 NUMBER 值转换为单个 CHAR?

c - 从文件中读取并标记化输入 C

c - 如何在 C 中将平面数组 reshape 为 2d?

C - 指向动态结构数组的指针

Javascript:如何将数组元素从 7、8、9、10 编辑为 07、08、09、10?