C语言,想给字符型的指针读入字符串(动态内存),应该怎么读?我这个为什么不对?

int i;
char *pName=NULL;
for(i=0;i<10;i++)
{
pName[i]=(char*)malloc(20*sizeof(char));
}

第1个回答  2010-11-06
开始的时候,pName = NULL,就是让指针不指向任何地址,你在循环体却还试图使用pName[i](即在pName的地址基础上加i个单元地址(根据指向数据类型而定)),当然错啦! 你要读入字符串不需要循环,一个字符指针就可以读字符串了。
int i;
char *pName = (char*)malloc(20*sizeof(char));
for(i=0;i<10;i++)
{
scanf("%c",pName[i]); //每次读入一个字符
}
第2个回答  2010-11-06
你只定义了一个字符型指针,当然不能接受你开辟10组字符空间的设置啦,
如果希望得到你for循环操作的结果,应该改为:
int i;
char *pName【10】;
for(i=0;i<10;i++)
{
pName[i]=(char*)malloc(20*sizeof(char));
}本回答被提问者采纳
第3个回答  2010-11-06
不需要循环
相似回答