CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

为什么这样写不对?

楼主winia(寻找翅膀的狗)2005-04-03 14:41:27 在 C/C++ / C语言 提问

#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

相关问题

  • c#中这样写为什么不对?
  • 请问这样写为什么不对?
  • 这样写为什么不对?
  • 这样写为什么不对???
  • 为什么这样写不对呀?
  • 为什么要这样写?
  • 为什么要这样写?
  • 为什么这样对我!!!
  • 这样为什么不对?
  • 这样写为什么不对?请指教

关键词

  • 指针
  • 内存
  • 数组
  • 指向
  • scanf
  • 内存空间
  • 是个
  • char

得分解答快速导航

  • 帖主:winia
  • kobefly
  • pcboyxhy
  • pcboyxhy
  • cqulzg
  • tabris17
  • Konker_Roc
  • fidys
  • bluebroad

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo