c语言实现多行输入 每行是一个字符串 并以@作为结束输入标志

输入若干个城市的名称(每个城市名称的长度小于30个字符,城市总数不超过30)。每行输入一个城市,以一行单独输入字符@作为输入结束标志。要求对这些城市按照字典顺序进行排序后输出。

#include <stdio.h>
#include <string.h>
// 字符串比较函数
int cmp(const void * a,const void *b) //qsort库要求参数const
{
    return strcmp((char *)a,(char *)b) ; //字典序从小到大
}


int main()
{
        char str[31][128] = {""};

        // 输入
        int  i = 0;
        while(scanf("%s", str[i++]) != EOF)
        {
                if(strncmp(str[i-1],"@",1) == 0)
                {
                        i -= 1;
                        break;
                }
        }

        // 排序
        qsort(str, i, sizeof(str[0]), cmp);

        // 输出
        for(int j = 0; j < i; j++)
        {
                printf("[%d] = %s\n", j, str[j]);
        }

        return 0;
}

img



手打不易,对你有帮助的话不妨给个关注呗😁