求解c
#include <conio.h>
#include <string.h>
main()
{
char *str1[20],*str2[20],*str3[20];
clrscr();
printf( "input three numbers ");
gets(str1);
gets(str2);
gets(str3);
if(strcmp(str1,str2)> 0)
swap(str1,str2);\\提示可疑指针转换有问题
if(strcmp(str1,str3)> 0) swap(str1,str3);
if(strcmp(str2,str3)> 0) swap(str2,str3);
printf( "%s\n%s\n%s\n ",str1,str2,str3);
}
char swap(char *x,char *y)
{char *p[20];
strcpy(p,x);
strcpy(x,y);
strcpy(y,p);
}
[解决办法]
大致有如下几个问题:
char *str1[20],*str2[20],*str3[20];
/。。。。。。。。。。。。。。。。。/
printf( "input three numbers ");
gets(str1); //
gets(str2);
gets(str3);
所有的指针都不安全,也就是俗称的野指针,应该进行安全化处理,譬如对char *str1[20]指针数组:
for(int i=0;i <20;i++)
str1[i]=malloc(20); //为指针数组中的各个指针分配20字节的存储空间;
然后才能 gets(str1[i]);