CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

C中如何输入任意长度的字符串?着急!!

楼主goblinize(骆驼,在BEA狂奔~~~)2002-10-06 19:45:10 在 C/C++ / C语言 提问

要求用户输入3个任意长度的字符串,可以输入为空,为空就给NULL。  
  3个字符串的首字符地址分别给char   *a,char   *b,char   *b  
  2小时以内要结果!!多谢了诸位! 问题点数:50、回复次数:31Top

1 楼favorit(九天剑舞·曾几何时,醉里挑灯看剑)回复于 2002-10-06 19:53:54 得分 0

char   *a,*b,*c;  
  printf("Please   enter   the   three   string:");  
  scanf("%s,%s,%s",a,b,c);  
  好像是这个吧?记不太清楚了,好久不用c了  
   
  Top

2 楼liushmh(想开书店:) )回复于 2002-10-06 19:54:03 得分 0

任意长度是什么意思?Top

3 楼Louis819()回复于 2002-10-06 19:56:47 得分 0

预料或控制一下用户可能输入的字符数目为好,否则很难输入前给字符指针分配空间。Top

4 楼lbaby(春天来了...)回复于 2002-10-06 19:58:17 得分 0

任意长度?  
  你可以考虑用磁盘的空间,打开一个缓存文件  
  先把输入存到这个文件中,同时,我们也就得到了这个字符串的长度  
  呵呵,接下来,向操作系统要这个长度的内存。  
  ,然后从磁盘中读出这个文件到内存。  
  (这样,你就得到一个任意长度的字符串--在磁盘被装满之前)  
   
  我只有这个思路,没有"2小时以内要的结果!!"  
   
  呵呵,祝你好运Top

5 楼goblinize(骆驼,在BEA狂奔~~~)回复于 2002-10-06 19:59:27 得分 0

就是用户想输入多长就输入多厂,在内存允许的范围下。  
  Top

6 楼goblinize(骆驼,在BEA狂奔~~~)回复于 2002-10-06 20:00:14 得分 0

不行。我要具体代码!只有两个小时!!!Top

7 楼lbaby(春天来了...)回复于 2002-10-06 20:01:36 得分 0

当然,上述算法是以速度为代价的  
  不过,磁盘的速度一般会比手工输入快  
   
  Top

8 楼goblinize(骆驼,在BEA狂奔~~~)回复于 2002-10-06 20:03:02 得分 0

favorit(因你飞扬)   :你那个明显不行。根本运行不过去!Top

9 楼goblinize(骆驼,在BEA狂奔~~~)回复于 2002-10-06 20:04:18 得分 0

不考虑什么速度,什么空间。  
  输入的数据也许是0个字符,也许是1000个。估计不会再大Top

10 楼kingofvc(提薪像做贼 )回复于 2002-10-06 20:23:08 得分 50

char   ch;  
  int   length=1;  
  char   *p=(char   *)malloc(sizeof(char));  
  char   *q;  
  *p='\0';  
  ch=getch();  
  while(ch!=13)  
  {    
          q=(char   *)malloc(sizeof(char)*(length++));  
          拷贝p到q  
          q追加ch字符  
          free(p);  
          p=q;          
  }  
  Top

11 楼suntao222(三万英尺)回复于 2002-10-06 20:29:23 得分 0

#   include   <stdio.h>  
  main()  
  {  
  char   *a,ch;  
  char   str[1000];  
  a=str;  
  printf("input\n");  
  while((ch=getch())!='N')       //N   是输入结束条件  
  {  
  printf("%c",ch);  
  *a++=ch;  
  }  
  *a='\0';  
  a=str;  
  printf("%s",a);  
  return   0;  
  }  
  另外两个输入字符串同上.最大输入你可自己在str数组中设定Top

12 楼suntao222(三万英尺)回复于 2002-10-06 20:46:23 得分 0

#   include   <stdio.h>  
  main()  
  {  
  FILE   *fp;  
  char   *a,ch;  
  //write   data   to   a.txt  
  if((fp=fopen("a.txt","wb"))==NULL)  
  {  
  printf("cannot   open   the   file");  
  exit(0);  
  }  
  while((ch=getch())!='N')  
  if(!ferror(fp))   fputc(ch,fp);  
  fclose(fp);  
   
  //read   data   from   a.txt  
  if((fp=fopen("a.txt","rb"))==NULL)  
  {  
  printf("cannot   open   the   file");  
  exit(0);  
  }  
  while((ch=fgetc(fp))!=EOF)  
  {  
  printf("%c",ch);  
  }  
   
  return   0;  
  }  
  这个是对磁盘文件操作的.理论上可以输入无限字符(只要磁盘空间够大^_^),剩下的另外两个字串你自己照着复制粘贴好了,不过别忘了改变量啊!Top

13 楼goblinize(骆驼,在BEA狂奔~~~)回复于 2002-10-06 21:12:13 得分 0

kingofvc(其实恶狼2000也不错):  
  你的程序我调试死机!Top

14 楼johnmack(爱若琴弦)回复于 2002-10-06 21:13:54 得分 0

char   ch;  
  int   length=1;  
  char   *p=(char   *)malloc(sizeof(char));  
  char   *q;  
  *p='\0';  
  ch=getch();  
  while(ch!=13)  
  {    
          q=(char   *)malloc(sizeof(char)*(length++));  
          拷贝p到q  
          q追加ch字符  
          free(p);  
          p=q;          
  }  
  Top

15 楼goblinize(骆驼,在BEA狂奔~~~)回复于 2002-10-06 21:17:19 得分 0

suntao222(三万英尺)   :  
  我说了,不能局限大小。你的第一个程序不行Top

16 楼goblinize(骆驼,在BEA狂奔~~~)回复于 2002-10-06 21:18:09 得分 0

johnmack(爱若琴弦)   :什么意思?Top

17 楼suntao222(三万英尺)回复于 2002-10-06 21:25:52 得分 0

那你就用第二个了,我是用TC3.0写的,两个都已经编译通过了啊^O^.Top

18 楼goblinize(骆驼,在BEA狂奔~~~)回复于 2002-10-06 21:28:51 得分 0

拷贝p到q  
          q追加ch字符  
  什么意思?Top

19 楼suntao222(三万英尺)回复于 2002-10-06 21:28:51 得分 0

注意最后的输入结束条件,是大写的N(我可不知道你想让用户输到哪结束),这个你可以自己改的,应该会改吧,你要是连这个都不会,那你就说说你想要的输入结束条件是什么,我给你改.Top

20 楼goblinize(骆驼,在BEA狂奔~~~)回复于 2002-10-06 21:32:13 得分 0

谢谢你的帖子,不过我不想使用文件储存的方式。Top

21 楼suntao222(三万英尺)回复于 2002-10-06 21:56:21 得分 0

设数组的话最大是有限制的,所以只能用磁盘文件操作了.你要是想要无限字符输入,那你先给我找个有无限存储空间的内存条或者是硬盘来吧.Top

22 楼shclhs(hello)回复于 2002-10-06 22:18:59 得分 0

好象只有用联表了因为未只大小,Top

23 楼suntao222(三万英尺)回复于 2002-10-06 22:21:10 得分 0

好注意,就是麻烦点Top

24 楼lodemaggie(相约北京)回复于 2002-10-06 22:43:47 得分 0

favorit说的对吧!Top

25 楼goblinize(骆驼,在BEA狂奔~~~)回复于 2002-10-07 13:35:08 得分 0

我假设内存无限大Top

26 楼suntao222(三万英尺)回复于 2002-10-07 13:39:49 得分 0

你怎么又来发这个烂帖子,两个小时不是早过了Top

27 楼shclhs(hello)回复于 2002-10-07 13:41:37 得分 0

靠你还是三颗星,真的假的,不解啊Top

28 楼goblinize(骆驼,在BEA狂奔~~~)回复于 2002-10-07 13:44:08 得分 0

char   ch;  
  int   length=1;  
  char   *p=(char   *)malloc(sizeof(char));  
  char   *q;  
  *p='\0';  
  ch=getch();  
  while(ch!=13)  
  {    
          q=(char   *)malloc(sizeof(char)*(length++));  
          拷贝p到q  
          q追加ch字符  
          free(p);  
          p=q;          
  }  
   
  的完整代码是怎样?Top

29 楼rjcb99(伯克)回复于 2002-10-07 14:04:10 得分 0

链表Top

30 楼goblinize(骆驼,在BEA狂奔~~~)回复于 2002-10-07 14:07:56 得分 0

申请延长一天,今天晚上交  
  我的星是在2000/98那些区得的。  
  我编程很兰Top

31 楼zfjas(zfjas)回复于 2002-10-07 14:42:50 得分 0

先用一个足够大的中间量(可以是字符数组等)来存输入的值,然后再用strcpy()函数拷贝到变量中去。用缺省值来完成没有输入值的作NULL处理。Top

相关问题

  • C++实现任意长度字符串的复制
  • 字符串长度
  • c#中如何判断中文字符串的真实长度
  • A,B,C,D,E 5个字符串,把其中任意个不为空的字符串用AND 连起来,付给字符串 F..怎么写??
  • 求C语言字符串与ANSI字符串的相互转化,以及如何取得C语言字符串实有长度.
  • 计算字符串长度?
  • 关于字符串长度
  • 字符串长度问题。
  • 字符串长度问题?
  • 字符串长度问题

关键词

  • 字符
  • 拷贝
  • 文件
  • 内存
  • 用户
  • null
  • 输入
  • 字符串
  • 磁盘
  • 拷贝p到q q追加

得分解答快速导航

  • 帖主:goblinize
  • kingofvc

相关链接

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

广告也精彩

反馈

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