void swap(char str1,char str2,char str3){//字符数组为指针变量 char *temp,*p1,*p2,*p3; p1=str1; p2=str2; p3=str3; if(strcmp(str1,str2)>0)//strcmp(*str1,*str2) 错误 { temp=p1; p1=p2; p2=temp; } if(strcmp(str1,str3)>0){ temp=p1; p1=p3; p3=temp; } if(strcmp(str2,str3)>0){ temp=p2; p2=p3; p3=temp; } } int main() { char str1[100],str2[100],str3[100];//定义字符数组时,要定义其长度 gets(str1); gets(str2); gets(str3); swap(str1,str2,str3); printf("%s\n%\n%s\n",str1,str2,str3); return 0; }
时间: 2024-03-18 14:40:58 浏览: 46
这段代码似乎有一些问题。首先,函数声明中的参数应该是指针类型,而不是字符类型。其次,在函数内部使用 `strcmp` 比较字符串时,应该传入指针,而不是字符。最后,`printf` 函数的格式控制字符串中 `%\n` 似乎有误,应该改为 `\n`。
修改后的代码如下:
```
void swap(char *str1, char *str2, char *str3){
char *temp, *p1, *p2, *p3;
p1 = str1;
p2 = str2;
p3 = str3;
if(strcmp(str1, str2) > 0){
temp = p1;
p1 = p2;
p2 = temp;
}
if(strcmp(str1, str3) > 0){
temp = p1;
p1 = p3;
p3 = temp;
}
if(strcmp(str2, str3) > 0){
temp = p2;
p2 = p3;
p3 = temp;
}
}
int main() {
char str1[100], str2[100], str3[100];
gets(str1);
gets(str2);
gets(str3);
swap(str1, str2, str3);
printf("%s\n%s\n%s\n", str1, str2, str3);
return 0;
}
```
请注意,`gets` 函数存在缓冲区溢出的安全隐患,应该使用更安全的输入函数替代。
阅读全文