当前位置: 代码迷 >> C语言 >> [求助]关于指针数组??
  详细解决方案

[求助]关于指针数组??

热度:125   发布时间:2006-07-28 16:32:13.0
[求助]关于指针数组??
如果想从键盘输入三个不等长的字符串,用指针数组怎么实现
main()
{char *c[3];
int i;
for (i=0;i<3;i++)
scanf("%s",c[i]); [这里能用gets函数吗?]
for (i=0;i<3;i++)
printf("%s\n",c[i]);
}
不知道有什么问题,每次运行,只能打出出c[1]的字符串,第一行显示(null),第三行是乱码
请各位高手指点,最好能给段代码
谢谢!
搜索更多相关的解决方案: 指针  

----------------解决方案--------------------------------------------------------
对这个论坛灰心,以删除,在见。

[此贴子已经被作者于2006-7-31 16:01:36编辑过]


----------------解决方案--------------------------------------------------------
char c[3][10];-->char *c[3];
指针必须先指向确定的地址才能引用。

----------------解决方案--------------------------------------------------------
对这个论坛灰心,以删除,在见。

[此贴子已经被作者于2006-7-31 16:01:52编辑过]


----------------解决方案--------------------------------------------------------
楼上的意思是先已经有一个字符串数组存在,然后才能声明指针数组指向字符串数组
指针数组只能只能指向数组的头地址
如果本身字符串不存在,通过指针数组是不能为你开辟一个空间来存储字符串的
不知道说清楚了没有
呵呵
----------------解决方案--------------------------------------------------------
提示: 该帖被管理员或版主屏蔽

对不礼貌的女生收钱......
2006-07-28 09:08:20
ccjamting

等 级:新手上路
帖 子:46
专家分:0
注 册:2006-7-10
  得分:0 
对这个论坛灰心,以删除,在见。

[此贴子已经被作者于2006-7-31 16:02:07编辑过]


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

我来写一个...
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(void)
{
int i;
char *c[20];
char s[20]; /*临时存储输入的字符串*/
for(i=0;i<3;i++)
{
gets(s);
c[i]=(char*)malloc(strlen(s)+1);
strcpy(c[i],s);
}
}


----------------解决方案--------------------------------------------------------
我理解楼主的意思是输入三个不等长的字符串,然后根据字符串长度分配存储空间,不懂对不对哦
另外建议楼主写程序是注意一下格式,这样我们看起来比较清楚阿呵呵
----------------解决方案--------------------------------------------------------

9楼的朋友的代码里的
c[i]=(char*)malloc(strlen(s)+1);

strlen(s)是指的字符串的长度吧,为什么要加1呢?
不懂哦


----------------解决方案--------------------------------------------------------
  相关解决方案