这个bug在哪里,如何为字符型指针数组赋值呢?

程序如下:

 #include<stdio.h>
#include<string.h>
main()
{
    char *a[2];
    char *d;
    printf("请输入两个字符串:");
    scanf("%s%s",a[0],a[1]);
    if(strcmp(a[0],a[1])>0)
    {d=a[0];a[0]=a[1];a[1]=d;}
    printf("%s\n",a);
}

指针数组没初始化

 #include<stdio.h>
#include<string.h>
void main()
{
    char str1[80],str2[80];//修改
    char *a[2];
    char *d;
    a[0]=str1; a[1]=str2;//修改
    printf("请输入两个字符串:");
    scanf("%s%s",a[0],a[1]);
    if(strcmp(a[0],a[1])>0)
    {d=a[0];a[0]=a[1];a[1]=d;}
    printf("%s\n",a[0]);//修改
}

应该这样,动态开辟内存两个字符串,每个长度为99,当然你也可以自定义长度,然后就可以进项下面的运算了
#include
#include
int main()
{
char **a;
a=new char*[2];
a[0]=new char[100];
a[1]=new char[100];
char *d;
printf("请输入两个字符串:");
scanf("%s%s",a[0],a[1]);
if(strcmp(a[0],a[1])>0)
{d=a[0];a[0]=a[1];a[1]=d;}
printf("%s\n",a);

delete []a;
return 0;

}