分配存存字符串 出
#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的地址,所以改变它的值,都改变了