首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

動態分配內存存儲字符串 輸出問題解决办法

2013-03-29 
動態分配內存存儲字符串輸出問題#include stdio.h#include stdlib.h #define N 9 int main(int argc,

動態分配內存存儲字符串 輸出問題



#include "stdio.h"
#include "stdlib.h" 
#define N 9 
int main(int argc, char* argv[])
{
int count,i;
char time1[18];
char timeback1[N];
scanf("%d",&count); //输入行数 
char **ptr; 

ptr=(char **)malloc(sizeof(char *)*count); //意思是先定义一个有count个char类型的指针的动态数组,裏面存放的是指针 
for(i=0;i<count;i++) //分配COUNT个内存
{
ptr[i]=(char *)malloc(sizeof(char)*N);

for(i=0;i<count;) //输入count个字符串
{
gets(time1);
if(time1[0]=='\0')//空行则吃掉
continue; ptr[i]=time1;
i++; 

for(i=0;i<count;i++) //输出字符串
{
puts(ptr[i]); 

for(i=0;i<count;i++) //释放内存
{
free(ptr[i]);
}
free(ptr); 
return 0;





代码如上。我的目的是先输入一个数COUNT,代表准备要输入COUNT行字符串。然后输入COUNT行字符串。再然后将这COUNT行字符串依次输出。
但是 输入多行字符串后,只会重覆输出最后一行。还会包一个错。想了好久都没想明白,希望指导一下。
先謝謝了。









c
[解决办法]
gets第一次读取了count,只能读一行了
[解决办法]
单步调试下。
[解决办法]
看错了。应该是这样,你用的都是time1赋值,都是用指针指向time1的地址,所以改变它的值,都改变了

热点排行