c 语言问题求答,有关指针数组。

来源:百度知道 编辑:UC知道 时间:2024/06/21 04:59:15
我有一段源代码,有问题,但不知是那里错了。向诸大侠求答:
main()
{
int i;
char *p[10];
printf("input 10 string:\n");
for(i=0;i<10;i++)
{
scanf("%s",p[i]);
}
printf("The 10 string is:\n");
for(i=0;i<10;i++)
{
printf("%s\n",p[i]);
}
}

你主要没理解指针的含义,你定义的指针数组,每个元素是指针,这些指针虽然可以指向一个字符串,但是他不能存放字符串,因为他就四个字节,所以要为指针开辟空间

我用的是VC开发环境,代码如下:
#include <stdio.h>
main()
{
int i;
char *p[10];
printf("input 10 string:\n");
for(i=0;i<10;i++)
{
p[i]=new char[30];//开辟30个字符控件以来存储字符串。但是字符串不能超过30个包括‘\0’
scanf("%s",p[i]);
}
printf("The 10 string is:\n");
for(i=0;i<10;i++)
{
printf("%s\n",p[i]);
delete p[i];
}

return 0;
}

for(i = 0; i < 10; i++)
{
p[i] = new char[10];
scanf("%s",p[i]);
}
使用指针地址之前要先给指针分配指向的内存
这里分配给指针的内存是10个字节
你要是需要录入更大的就调整下new语句

char *p[10]定义错了,内存错误
应该定义个数组a[10],然后p=a;
scanf("%s",p[i]);错了。
用%s字符串输入输出时数组或指针只需要写出名字
既:scanf("%s",p);

输入错了 scanf("%c",p[i]) scanf("%s") %s表示输入