编译器没有报错,但无法输出国家名称的顺序,不知道是哪里出了问题

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
int n;//国家数量
int i=0;
char *a;
scanf("%d",&n);
char *pcountry=NULL;
for(i=0;i<n;i++)
{
pcountry=malloc(10);
scanf("%s",(pcountry+i));//输入每个国家的英文名称
}
for(i=0;i<n;i++)
{
if(strcmp(pcountry,pcountry+1)<0)
continue;
else
{
*a=*pcountry;
pcountry=(pcountry+1);
*pcountry=a;
}
}
for(i=0;i<n;i++)
{
printf("%s",
(pcountry+i));//把国家名称按字典顺序输出
}
return 0;
}

程序逻辑因为你的国家变量不是数组这个是混乱了。
pcountry=malloc(10);
scanf("%s",(pcountry+i));//输入每个国家的英文名称
把pcountry当数组用了。

供参考:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
    int n;//国家数量
    int  i = 0, j = 0;
    char a[16] = {0};
    char pcountry[100][16]={0};
    scanf("%d", &n);
    for (i = 0; i < n; i++)
    {
        //pcountry = (char*)malloc(sizeof(char) * 10);
        scanf("%s", pcountry+i);//输入每个国家的英文名称
    }
    for (i = 0; i < n - 1; i++)
    {
        for (j = 0; j < n - i - 1; j++)
        if (strcmp(pcountry[j], pcountry[j+1]) < 0)
            continue;
        else
        {
            strcpy(a, pcountry[j]);
            strcpy(pcountry[j], pcountry[j + 1]);
            strcpy(pcountry[j+1], a);
            //*a = *pcountry;
            //pcountry = (pcountry + 1);
            //*pcountry = a;
        }
    }
    for (i = 0; i < n; i++)
    {
        printf("%s ", (pcountry + i));//把国家名称按字典顺序输出
    }
    return 0;
}