为什么这样写不对?
#include "stdio.h"
main()
{
char *p[256];
int i;
for(i=0;i<256;i++)
{
scanf("%s",p[i]);
if(*p[i]=='0')
break;
}
for(i=0;i<256;i++)
{
if(*p[i]=='0')
break;
printf("%s\n",*p[i]);
}
}
为什么这样写不对?
问题点数:12、回复次数:15Top
1 楼du51(郁郁思扬)回复于 2005-04-03 14:45:04 得分 0
p[i]=='0' 这个东西的ASCII是48不知道你==它是什么意思.Top
2 楼du51(郁郁思扬)回复于 2005-04-03 14:45:57 得分 0
p[i]是个指针指向字符串.'0'是一个CHAR..Top
3 楼kobefly(科比--网络学习中)回复于 2005-04-03 14:50:35 得分 2
char *p[256];
指针数组
没有为指针分配存储空间Top
4 楼pcboyxhy(-273.15℃)回复于 2005-04-03 14:51:24 得分 1
printf("%s\n",*p[i]); //printf("%s\n",p[i]);
Top
5 楼winia(寻找翅膀的狗)回复于 2005-04-03 14:51:29 得分 0
我写的是 *p[i]=='0'
如果遇到0时,跳出循环Top
6 楼pcboyxhy(-273.15℃)回复于 2005-04-03 14:51:57 得分 2
char *p[256]; //malloc memory
Top
7 楼cqulzg(love_cpp)回复于 2005-04-03 14:55:00 得分 2
#include "stdio.h"
main()
{
char *p[256];
int i;
for(i=0;i<256;i++)
{
scanf("%s",p[i]);
if(*p[i]=='0')
break;
}
for(i=0;i<256;i++)
{
if(*p[i]=='0')
break;
printf("%s\n",*p[i]);//这个不对吧,printf("%s\n",p[i]);
}
}
Top
8 楼tabris17(四不象)回复于 2005-04-03 14:58:51 得分 1
#include "stdio.h"
int main()
{
char p[10][10];
int i;
for(i=0;i<10;i++)
{
scanf("%s",p[i]);
if(*p[i]=='0')
break;
}
for(i=0;i<10;i++)
{
if(*p[i]=='0')
break;
printf("%s\n",p[i]);
}
return 0;
}
Top
9 楼winia(寻找翅膀的狗)回复于 2005-04-03 15:06:21 得分 0
用malloc函数,怎么为指针数组分配空间呢?Top
10 楼sky911911(assda)回复于 2005-04-03 15:26:56 得分 0
帮你顶 好久没来了 看来自己还是需要学习哦 高手出招哦!Top
11 楼Konker_Roc()回复于 2005-04-03 16:37:59 得分 2
同意kobefly(科比---开始学习c++!)
#include "stdio.h"
main()
{
char *p[256];
int i,m;
for(i=0;i<256;i++)
{
char temp[20]="";
scanf("%s",temp);
m=strlen(temp);
p[i]=(char *)malloc(sizeof(char)*(m+1));
scanf("%s",p[i]);
p[i][m]='\0';
if(*p[i]=='0')
break;
}
for(i=0;i<256;i++)
{
if(*p[i]=='0')
break;
printf("%s\n",p[i]);
}
}Top
12 楼winia(寻找翅膀的狗)回复于 2005-04-03 18:21:55 得分 0
p[i][m]='\0';//我觉得是p[i][m+1]='\0';Top
13 楼jsd850926(紫冰)回复于 2005-04-03 18:57:59 得分 0
指针没有进行初始化(指向未知的内存空间)
即未分配储存空间
这样讲对吗Top
14 楼fidys(Piboye)回复于 2005-04-03 19:47:18 得分 1
问题在你定义了个 元素类型为 char * 的数组
既 char * p[256];==>char* (p[256);
在scanf("%s",p[i]);时,你传过去的是个没有分配地址的指针
既 p[i] 这是的值是个随机值,
这可能会引起运行时错误
Top
15 楼bluebroad(bluesky)回复于 2005-04-03 20:16:42 得分 1
char *p[256]表示定义了一个指针数组,数组中的每个值未进行初始化,即指向未知的内存空间,当使用scanf将用户输入的字符存到p[i]指向的未知内存空间时,自然就会出错罗!Top




