当前位置: 代码迷 >> C语言 >> 求助:一个指针数组的问题
  详细解决方案

求助:一个指针数组的问题

热度:124   发布时间:2005-10-03 17:29:00.0
求助:一个指针数组的问题

高手哥哥们,帮我看看这个程序哪里有问题,字符数组的用法是不是有问题,为什么老是警告我 'strcpy' : cannot convert parameter 1 from 'char *[20]' to 'char *',这个char *p[20]究竟该怎么用啊,请指点下.

main() { char *str1[20],*str2[20],*str3[20]; char swap(); printf("please input three strings\n"); scanf("%s",str1); scanf("%s",str2); scanf("%s",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("after being sorted\n"); printf("%s\n%s\n%s\n",str1,str2,str3); } char swap(p1,p2) char *p1,*p2; { char *p[20]; strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p); }

搜索更多相关的解决方案: 指针  swap  char  scanf  

----------------解决方案--------------------------------------------------------

阁下,指针数组不能这样用。

首先,你定义了三个指针数组,它们的每个元素都是字符型指针变量。对于指针变量,使用前都应赋初值,而你却没有给它们赋初值。

其次,str1,str2和str3分别是你所定义的三个指针数组的首地址,它们所指向的地址单元里应该存的是地址,而不是字符型数据。

这里只需定义一个元素个数为3的指针数组 *str[3]。具体可参考谭浩强的教材的第10章习题12.下面是我对此题的解答,可输出正确结果。

#include<stdio.h> #include<string.h> main() { char *string[10],a[10][30],*temp; int i,j; for(i=0;i<10;i++) string[i]=a[i]; printf("\nPlease input 10 strings.\n"); for(i=0;i<10;i++) gets(string[i]); for(i=0;i<10;i++) {for(j=0;j<9-i;j++) if(strcmp(string[j],string[j+1])>0) { temp=string[j]; string[j]=string[j+1]; string[j+1]=temp; } } printf("The strings in increased order:\n"); for(i=0;i<10;i++) puts(string[i]); }


----------------解决方案--------------------------------------------------------
谢谢指点,现在我明白了
----------------解决方案--------------------------------------------------------
  相关解决方案