当前位置: 代码迷 >> C语言 >> [求助]指向二维动态数组,怎么做
  详细解决方案

[求助]指向二维动态数组,怎么做

热度:297   发布时间:2006-08-05 21:16:23.0
[求助]指向二维动态数组,怎么做

#include <stdio.h>

main()
{
char * line[500], *str;
int i = 0;
str = (char *)malloc(128);

while(i != 3)
{
scanf("%s",str);
line[i] = str;
++ i;
}
for(i = 0; i < 3; i ++)
{
printf("%s\n",line[i]);
}
}
想实现每输入一行line[i]就指向它,但结果都是指向最后输入的那行
要怎么改才能实现?谢谢!

搜索更多相关的解决方案: 动态  str  line  char  

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

str指针指向的空间老是同一个,不断的被您输入字符串冲刷,指向的自然是最后一个了。
要么您一次性的为三个数组申请三个不同的空间,
char str[3][128];
char (*line)[3];
要么您每输入一次字符串,让它输出一次。


----------------解决方案--------------------------------------------------------
128
----------------解决方案--------------------------------------------------------
以下是引用soft_wind在2006-8-5 21:27:24的发言:

str指针指向的空间老是同一个,不断的被您输入字符串冲刷,指向的自然是最后一个了。
要么您一次性的为三个数组申请三个不同的空间,
char str[3][128];
char (*line)[3];
要么您每输入一次字符串,让它输出一次。

这样的话好像就不可以动态分配内存了,还需要动态分配


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

那你就这样也行.效果一样。
char *str[3];
str[i]=()malloc();


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

#include <stdio.h>

main()
{
char (*line)[3];
int i = 0;
while(i != 3)
{
line[i] = ( char * ) malloc( 128 );
scanf("%s",line[i]);
++ i;
}
for(i = 0; i < 3; i ++)
{
printf("%s\n",line[i]);
}
}
这样的话编译不能通过,要怎样改呢?


----------------解决方案--------------------------------------------------------
我上个帖子写错,导致您对行指针的理解有错,实在不好意思。
(*str)[3]===>指向列包含三个元素的二维数组的行指针。
所以2楼的帖子有错。应该是(*str)[128]
----------------解决方案--------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>
main()
{
char *line[3];

int i = 0;
while(i != 3)
{
line[i] = ( char * ) malloc( 128 );
scanf("%s",line[i]);
++ i;
}
for(i = 0; i < 3; i ++)
{
printf("%s\n",line[i]);
free(line[i]);
}
getch();
}


----------------解决方案--------------------------------------------------------
#include <stdio.h>
main()
{
char (*line)[128];
char str[3][128];
int i = 0;
while(i != 3)
{
scanf("%s",str[i]);
++ i;
}
line=str;
for(i = 0; i < 3; i ++)
{
printf("%s\n",line[i]);
}
getch();
}
您再对照上面改您的程序看看,相信很快就会明白行指针了。
----------------解决方案--------------------------------------------------------
谢谢版主!解决了
----------------解决方案--------------------------------------------------------
  相关解决方案