一个动态分配问题
/*目标是动态分配一个二维数组,然后读一行字符,最后打印出来*/
#include <stdio.h>
#include <stdlib.h>
#define LEN 30
int main()
{
char **pt;
int i;
pt = (char **)malloc( sizeof(char)*LEN*LEN );
for(i=0; i <LEN; i++)
{
printf( "Please input a string: ");
scanf( "%s ",pt[i]);
printf( "the string is %s\n ",pt[i]);
}
free(pt);
return 0;
}
错误:每次打印出来是空,没有内容
刚学,请高手帮忙。
[解决办法]
int main()
{
char **pt = NULL;
int i;
pt = new char*[LEN];
//校验内存是否分配成功;
pt[0] = new char[LEN * LEN];
//校验内存是否分配成功;
for (i=0; i < LEN; i++)
{
pt[i] = pt[0] + (i * LEN);
printf( "Please input a string: ");
scanf( "%s ", pt[i]);
printf( "the string is %s\n ",pt[i]);
}
//释放内存
return 0;
}