#include<stdio.h>
#include<string.h>
int main()
{
void com(char* q1, char* q2, char* q3, int a, int b, int c);
char s1[10] = { 0 }, s2[10] = { 0 }, s3[10] = { 0 };//定义三个字符串数组
scanf_s("%s%s%s", &s1,sizeof(s1), &s2, sizeof(s2), &s3, sizeof(s3));//实现一行输入三个字符串
char* q1 = s1, * q2 = s2, * q3 = s3;
int a, b, c;
a = strlen(q1); b = strlen(q2); c = strlen(q3);//计算三个字符串的有效长度
com(q1, q2, q3, a, b, c);
printf("%s<=%s<=%s\n", s1, s2, s3);
return 0;
}
void com(char* q1, char* q2, char* q3, int a, int b, int c)//比较三个字符串的长度并交换
{
void exchange(char* s1, char* s2);
if (a > b)
exchange(q1, q2);
if (a > c)
exchange(q1, q3);
if (b > c)
exchange(q2, q3);
if (a > b)
exchange(q1, q2);
}
void exchange(char* s1, char* s2)//交换两个字符串
{
char ch;
int i = 0;
while (*(s1 + i) != '\0')
{
ch = *(s1 + i);
*(s1 + i) = *(s2 + i);
*(s2 + i) = ch;
i++;
}
}
我感觉你从//实现一行输入三个字符串//这里就开始出问题了,print一下输入的三个字符串到底是什么
交换之后的字符串末尾要加'\0'