咋还出来中文了呢,迷惑啊


#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++;

    }

}



img

我感觉你从//实现一行输入三个字符串//这里就开始出问题了,print一下输入的三个字符串到底是什么

交换之后的字符串末尾要加'\0'