首页 > 解决方案 > 返回指向具有最小 ASCII 值的字符的指针的程序

问题描述

我写了以下程序

char *smallest_charachter(char str[]) {
    int * min = &str[0];
    int size = strlen(str);
    
    for (i=1; i<size; i++)
    {
        if (str[i]<*min)
        {
            min = str[i];
        }
    }
    
    return min;
}

此函数旨在返回指向具有最小 ASCII 值的字符的指针。做了一些测试后,我的功能无法正常工作,我似乎无法弄清楚问题是什么。任何修复我的功能的提示或技巧都会有很大帮助。

标签: c

解决方案


strlen如果我们使for循环有条件,则无需使用:str[i]

min应该char *min不是 int *min

您混淆了 setup 和 test 以及min. 在循环中,当你应该从值的地址设置它时,你从字符值设置它。

你不定义i.

这是一些重构的代码:

char *
smallest_charachter(char str[])
{
    char *min = &str[0];

    for (int i = 1; str[i];  ++i) {
        if (str[i] < *min)
            min = &str[i];
    }

    return min;
}

推荐阅读