字符串指针数组值是重复的

ljxsl 2010-11-22 02:01:16
......

char *array[500];
char *buf = NULL;
int i = 0;


while ( 1 )
{
buf = gets(....);
if(! buf )
break;
array[i] = buf;
i ++;
}


为什么最后array[i]数组的每一个值都是最后一次buf的值呢?
(第一次array[0] ="aaaa" ,第二次时array[1] ="bbbbb",但是此时却发现array[0]也变成了"bbbbb" )
该怎么解决呢?
...全文
104 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljxsl 2010-11-22
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 luciferisnotsatan 的回复:]

用 strcpy(array[i],buf)

记得给数组里的每个指针分配空间
[/Quote]

谢了。正解。多给你点分。
luciferisnotsatan 2010-11-22
  • 打赏
  • 举报
回复
用 strcpy(array[i],buf)

记得给数组里的每个指针分配空间
ljxsl 2010-11-22
  • 打赏
  • 举报
回复
char *array[500];
char *buf = NULL;
int i = 0;

.......

while ( 1 )
{
array[i]= fgets(....);
if(! array[i)
break;
i ++;
}

出现了段错误.(buf申请过空间了)
allenbein 2010-11-22
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 csuxiaowu 的回复:]
引用 7 楼 ljxsl 的回复:

更正下:buf = fgets(....);//按行读取文件

那怎么把buf写在array[i]呢?

直接读入 array
[/Quote]
正解!
allenbein 2010-11-22
  • 打赏
  • 举报
回复
你共用了地址块 buf buf变 其他自然都变
Csuxiaowu 2010-11-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ljxsl 的回复:]

更正下:buf = fgets(....);//按行读取文件

那怎么把buf写在array[i]呢?
[/Quote]
直接读入 array
ljxsl 2010-11-22
  • 打赏
  • 举报
回复
更正下:buf = fgets(....);//按行读取文件

那怎么把buf写在array[i]呢?
Csuxiaowu 2010-11-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 luciferisnotsatan 的回复:]

gets是啥?

char *gets(
char *buffer
);
这个?
buf = gets(buf)? 你buf都没分配过空间,没崩掉?

就算没崩。每个array[i]都是指向buf,buf就一个,每次值都被替换了。所以500个array元素都是指向buf,500个都是同一个值,最后一次输入的值
[/Quote]
正解-
無_1024 2010-11-22
  • 打赏
  • 举报
回复
另外 gets的行数不是这样写的吧
無_1024 2010-11-22
  • 打赏
  • 举报
回复
buf = gets(....);//输入字符串存入buf
if(! buf )//如果buf为空
break;//跳出当前循环
array[i] = buf; //如果不是 将buf的值付给array[i]注意array是一个二维数组char *array[500];
i ++;//i自增
wxwlll 2010-11-22
  • 打赏
  • 举报
回复
是你循环的问题
luciferisnotsatan 2010-11-22
  • 打赏
  • 举报
回复
gets是啥?

char *gets(
char *buffer
);
这个?
buf = gets(buf)? 你buf都没分配过空间,没崩掉?

就算没崩。每个array[i]都是指向buf,buf就一个,每次值都被替换了。所以500个array元素都是指向buf,500个都是同一个值,最后一次输入的值

無_1024 2010-11-22
  • 打赏
  • 举报
回复
不懂你的意思 没看明白

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧