| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 656 人关注过本帖
标题:求助:一个指针数组的问题
只看楼主 加入收藏
drodan
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2004-12-5
收藏
 问题点数:0 回复次数:2 
求助:一个指针数组的问题

高手哥哥们,帮我看看这个程序哪里有问题,字符数组的用法是不是有问题,为什么老是警告我 '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 
2005-10-03 17:29
whut先行者
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2005-6-25
收藏
得分:0 

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

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

其次,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]); }

2005-10-03 22:29
drodan
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2004-12-5
收藏
得分:0 
谢谢指点,现在我明白了
2005-10-04 13:10
快速回复:求助:一个指针数组的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029763 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved