第1个回答 2011-07-11
*p[10],具有10个字符指针的数组,先要存在具体地址,否则是野指针,发生错误
#include "stdio.h"
#include "stdlib.h"
main()
{
char *p[10],*temp;
int i,j,k;
for(i=0;i<10;i++)
{
p[i]=(char*)malloc(sizeof(char)*50);//开辟内存
}
for(i=0;i<10;i++)
{
printf("输入第%d本书的书名\n",i+1);
gets(p[i]);
}
for(i=0;i<10;i++)
{
printf("%s\n",p[i]);
}
}本回答被提问者和网友采纳
第2个回答 2011-07-11
没有为指针p分配内存
#include <stdio.h> //printf头文件
#include <string.h> //memset头文件
#include <malloc.h> //malloc头文件
int main()
{
char *p[10];
int i;
for(i=0;i<10;i++)
{
char buf[256];
memset(buf, 0, sizeof(buf)); //初始化内存
printf("输入第%d本书的书名\n",i+1);
gets(buf); //把书名放入缓存
p[i] = (char*)malloc(strlen(buf)+1);//在堆上为指针申请一块内存区域
strncpy(p[i], buf, strlen(buf)+1); //将缓存中的书名拷贝到指针所指的内存区域
}
//测试
for(i=0;i<10;i++){
printf("%s\n",p[i]);
}//测试结束
for(i=0;i<10;i++){
free(p[i]); //避免内存泄露
}
getchar(); //vs下运行时等待按键输入,避免运行结果一闪而过
return 0;
}
第3个回答 2015-05-17
char pointerStr[100]
scanf("%s", pointerStr)
第4个回答 2011-07-11
试试改成这样:
#include"stdio.h"
main()
{
char *p[10],*temp;
int i,j,k;
for(i=0;i<10;i++)
{
printf("输入第%d本书的书名\n",i+1);
gets(p);
}
}