返回指向具有最小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]
。请注意不一致性?此外,您的编译器应该对此进行投诉。打开编译器警告并确保代码在编译时没有任何警告。-墙编译器参数应该对您有很大帮助