Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
返回指向具有最小ASCII值的字符的指针的程序_C - Fatal编程技术网

返回指向具有最小ASCII值的字符的指针的程序

返回指向具有最小ASCII值的字符的指针的程序,c,C,我已经编写了以下程序 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;

我已经编写了以下程序

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;
}
char*最小字符(char str[]{
int*min=&str[0];
int size=strlen(str);

对于(i=1;i如果我们将
for
循环条件化为:
str[i]

min
应该是
char*min
而不是
int*min

您混淆了设置、测试和设置
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;
}
char*
最小字符数(字符str[]
{
char*min=&str[0];
for(int i=1;str[i];++i){
如果(str[i]<*min)
min=&str[i];
}
返回最小值;
}

对于初学者来说:
int*min
应该是
char*min
在一行
min=&str[0]
和另一行
min=str[i]
。请注意不一致性?此外,您的编译器应该对此进行投诉。打开编译器警告并确保代码在编译时没有任何警告。-墙编译器参数应该对您有很大帮助