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

一个C常见问题,关于字符串的.

楼主monika0617(monika)2004-12-03 11:42:12 在 C/C++ / C语言 提问

要输入一个字符串,事先不知其长度(多少字符),我只会用数组,并且将数组个数定的足够大,有没有什么办法定义一个变量可以避免这个问题,怎么定义?謝謝! 问题点数:20、回复次数:28Top

1 楼limlzm(凡叶)回复于 2004-12-03 11:44:28 得分 0

动态申请Top

2 楼monika0617(monika)回复于 2004-12-03 11:46:14 得分 0

 
  如何解释动态申情啊  
  Top

3 楼ewayne(...)回复于 2004-12-03 11:48:17 得分 0

用new!Top

4 楼lxb8892(未来高手)回复于 2004-12-03 11:51:52 得分 0

定义一个指针char   *s;Top

5 楼windindance(风舞轻扬·白首为功名)回复于 2004-12-03 11:53:56 得分 0

用C++就很简单了……  
  #include   <string>  
  using   namespace   std;  
   
  main()  
  {  
      string   s;  
      cin   >>   s;  
  }Top

6 楼monika0617(monika)回复于 2004-12-03 11:55:00 得分 0

lxb8892(未来高手)   ,那S指向什么呢Top

7 楼5will(威儿)回复于 2004-12-03 11:59:13 得分 0

char   *s=new   char[1000];  
  差不多够用了  
  string   s和上面这样做差不多了Top

8 楼LSYLSY(李思)回复于 2004-12-03 12:02:34 得分 0

链表,  
  可以考虑每十个字节一个接点。Top

9 楼greenteanet(扎扎实实打基础,保持一颗平常心。)回复于 2004-12-03 12:05:12 得分 0

我一般情况下是用new的,但是我觉得用string   s,然后cin   >>   s;也可以Top

10 楼Gelf()回复于 2004-12-03 12:46:19 得分 0

1.用new申请空间;  
  2.赋值给指针;  
  3.结束时用deleteTop

11 楼gimney(星外来客)回复于 2004-12-03 12:55:20 得分 0

CUIntArray   uiarry;  
  就可以了!Top

12 楼monika0617(monika)回复于 2004-12-03 13:09:22 得分 0

我用的是C,在TC3.0下编译的,各位说的好象大都是C++Top

13 楼BeShrek(今晚打老虎)回复于 2004-12-03 13:19:30 得分 0

同意   LSYLSY(李思),用链表Top

14 楼qingyuan18(zealot_tang)回复于 2004-12-03 13:27:08 得分 0

string   []   arrayTop

15 楼tsingien(Read The F**king Source Code)回复于 2004-12-03 14:05:19 得分 0

用链表是省空间呢还是浪费空间呢?不划算,并且操作起来也麻烦。我觉得如果不是做嵌入式开发的你申请个几百个字节的空间是没什么问题的。没必要在这些小细节上计较。动态申请内存还要自己记得去释放,也比较麻烦的。Top

16 楼mhpdongxie(东邪)回复于 2004-12-03 14:23:20 得分 0

其实,动态分配与数组差不多,都要自己去定义大小,而且,动态分配的还要释放更麻烦,  
  建议还是使用一个足够大的数组,字符型指针不安全,会引起数据的破坏,还是别用了Top

17 楼ww425(如果人人都学一点JAVA,这个世界将变的更加美好!)回复于 2004-12-03 14:56:58 得分 0

用new就好了Top

18 楼rowdy(阿丘)回复于 2004-12-03 15:13:34 得分 0

楼主的问题不怎么实用,又麻烦!Top

19 楼keard(夜静水寒鱼不食,满船空载月明归)回复于 2004-12-03 15:43:14 得分 0

写到文件里去好了Top

20 楼xdspower(杂食菜熊)回复于 2004-12-03 16:08:53 得分 0

用数组其实是比较好的,不过要作好边界检测和处理,防止数据越界破坏程序。Top

21 楼copygirl(wa!)回复于 2004-12-03 16:22:39 得分 5

其实从本质上说,数组与指针是一样的,只不过数组在定义的时候定义了长度,而指针呢,只是在赋值的时候才定义了长度。  
  比如你char   aa[2];aa[2]="12";  
  定义指针的时候char   *p;这时p是没长度的,但p="12";时,就相当于把p的长度定义为2。  
  再注意一下最后一个'\0',当你想把一个指针的地址给一个数组的时候,如aa=p,那么,aa的长度一定要是指针长度加1,也就是aa[3],这样,指针最后的一个隐藏的'\0'才能复制到数组中,可以用printf("%s",aa);打印出来,否则就会在12后面出现乱码。  
  Top

22 楼GlacJAY(++C死爱我)回复于 2004-12-03 17:40:12 得分 0

同意keard,一个字符一个字符的读,然后一个字符一个字符的写到一个文件中,几十万个应该没问题  
  :-)Top

23 楼masse(当午 http://blog.sina.com.cn/xukf)回复于 2004-12-03 23:03:55 得分 0

这一点上还是java爽Top

24 楼SummerIdea(小菜学编程)回复于 2004-12-04 09:27:28 得分 5

看看这个是否符合楼主的要求,合适的话,呵呵,给分:)  
   
  #include   <stdio.h>  
   
  void   main()  
  {  
  int   c;  
  while((c   =   getchar())   !=   EOF)           //ctrl   +   z         end;  
  putchar(c);  
  getchar();  
  }Top

25 楼sink()回复于 2004-12-04 10:28:29 得分 10

#include   <stdio.h>  
  #include   <stdlib.h>//(or   malloc.h)   include   malloc,free  
   
  int   main(int   argc,char   *argv[])  
  {  
  int   len;  
  char   *p;  
  len=strlen(argv[1]);  
  p=(char   *)malloc(len+1);  
  ............  
  free(p);  
   
  }Top

26 楼WezZai(偶是湖南的)回复于 2004-12-04 10:41:24 得分 0

看楼上的...Top

27 楼godttj(Gody)回复于 2004-12-04 11:31:22 得分 0

开始就定制个活动的。Top

28 楼huxiaohuangcheng(虎虎)回复于 2004-12-04 19:33:41 得分 0

就用new   就可以了,也可以知道设计一个string类的.Top

相关问题

  • 截取字符串(C#)
  • C++字符串连接?
  • C++字符串连接?
  • C# 的字符串处理
  • 如何把BSTR字符串转变成C/C++的字符串?
  • 简单C语言字符串问题
  • 关于C#中字符串的问题。
  • C中能否声明字符串?
  • 寻找c函数:切割字符串。
  • c#中如何拆分字符串

关键词

  • c++
  • 指针
  • 字符
  • 数组
  • 长度
  • 定义
  • aa
  • 差不多
  • 麻烦
  • 问题

得分解答快速导航

  • 帖主:monika0617
  • copygirl
  • SummerIdea
  • sink

相关链接

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

广告也精彩

反馈

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