请教一段C代码

longaiting 2008-03-22 07:35:13
1. 从命令行读取任意长度的字符串,利用malloc和realloc为该字符串分配内存空间,将该字符串保存在内存中,并用printf输出
...全文
590 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjtliso 2008-03-24
  • 打赏
  • 举报
回复
请问一下,怎么用buffer来写?
longaiting 2008-03-23
  • 打赏
  • 举报
回复
谁想一下这个:编写宽字符版本的strlen函数,统计宽字符字符串的长度。
longaiting 2008-03-23
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 eyf0917 的回复:]
基本思路是,刚进循环时,计数为0,所以表明没有初始化,所以就用malloc函数,将它初始化,一个循环后,nCount++所以以后,每次利用realloc函数增长,无论你输入多少个,只要不输入回车,你的字符可以一直输个没完没了^_^
[/Quote]
这个想法很不错,先谢啦
eyf0917 2008-03-23
  • 打赏
  • 举报
回复
基本思路是,刚进循环时,计数为0,所以表明没有初始化,所以就用malloc函数,将它初始化,一个循环后,nCount++所以以后,每次利用realloc函数增长,无论你输入多少个,只要不输入回车,你的字符可以一直输个没完没了^_^
eyf0917 2008-03-23
  • 打赏
  • 举报
回复
肯定要在循环内加个,nCount++;的语句啊,难道这个也要我写吗,哈哈哈
billy1985 2008-03-23
  • 打赏
  • 举报
回复
楼上的ncout这个变量在while循环中没有发生改变
eyf0917 2008-03-23
  • 打赏
  • 举报
回复
定义一个字符型指针,,初始化,然后输入字符,每增加一个字符,利用reallor函数,增加空间,

例如:char *array;
char temp;
int nCount=0;
do{
printf("Please input char:");
scanf("%c",&temp);
if(nCount==0)
array=(char *)malloc(sizeof(char)); /*初始化*/
else
array=(char *)realloc((nCount+1)*sizeof(char));/*空间增长*/
...........
...........

}while(tmep!='\n');
基本思路就是这样的,其它的根据你的目的,添加语句
独孤过儿 2008-03-23
  • 打赏
  • 举报
回复
不是不给你写,是你这个任意长度没人敢写!

如果普普通的的长度,只要malloc内存就行了...而且还有,任意长度的字符串,还得考虑输入时候缓冲区的大小,如果超过了缓冲区的大

小,就溢出了,肯定出错!
longaiting 2008-03-23
  • 打赏
  • 举报
回复
兄弟内存是很贵的东西.哪位高手写一段?
sheenl 2008-03-23
  • 打赏
  • 举报
回复
最方便的做法是, malloc个4M的空间, 然后读字符串到这段空间里去。 如果你们老师认为4M空间不能存下任意大小的字符串, 那你就反问他如果你输入4T字节的字符串,算不算任意大小的字符串, 怎么保存
longaiting 2008-03-23
  • 打赏
  • 举报
回复
嗯,14楼和我的想法一样.欢迎大家踊跃发言
「已注销」 2008-03-23
  • 打赏
  • 举报
回复
你实际用用试试
程序是拿来用的,写这些没实际意义的程序干吗,浪费时间
tianhuo_soft 2008-03-23
  • 打赏
  • 举报
回复
使用单向链表
xiaochen57 2008-03-23
  • 打赏
  • 举报
回复
高手啊!
lin_style 2008-03-23
  • 打赏
  • 举报
回复
基本思路是,刚进循环时,计数为0,所以表明没有初始化,所以就用malloc函数,将它初始化,一个循环后,nCount++所以以后,每次利用realloc函数增长,无论你输入多少个,只要不输入回车,你的字符可以一直输个没完没了^_^


//中看不中用的代码。。回去看看缓冲池的原来再回过头来看看。 。

第一题:不要想着你写的程序可以实现一个完美的可以容纳任何大小的东东。。那没什么意义,你可以参考STL里买内数组内存的分配。
先分配M大的内存,如果当前使用率超过80%,对他进行扩充。或者说构造的对象比较大,用链表即可。


宽字符,不是很了解,没碰到过。
C中的宽字符基于wchar_t数据型态,它在几个表头文件包括WCHAR.H中都有定义,像这样:
typedef unsigned short wchar_t ;

不就是两倍吗?
howardftj 2008-03-23
  • 打赏
  • 举报
回复
一看就知道是老师出的题,这种细节的东西就是教学目标了,费时费力舍本逐末。
yinpu19871217 2008-03-23
  • 打赏
  • 举报
回复
buffer有限
aomeng 2008-03-22
  • 打赏
  • 举报
回复
我说一下我的思路,一定个较大的buffer,比如char buffer[1024],用scanf单个字符得到标准,判断是否是结束字符,不是的话将输入字符放到buffer中,然后调用scanf取后面的输入字符,当buffer长度到了1024时,用malloc分开空间,将buffer内容放到分配新空间中,清空buffer,然后继续前面的操作,当在达到buffer长度时,用realloc改变前面空间的长度,放入新的输入字符串。

定义buffer,是为了减少分配空间函数调用次数,减少系统开销。
lxjlan 2008-03-22
  • 打赏
  • 举报
回复
lz 的话。。。打击了人的积极性。。。
longaiting 2008-03-22
  • 打赏
  • 举报
回复
写一两段代码出来 嘛,说一些废话没用
加载更多回复(11)
微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识。微信小程序系统教程共有“微信小程序系统教程[初级阶段]”、“微信小程序系统教程[中级阶段]——核心技术”、“微信小程序系统教程[阶段]客服消息+微信支付+九宝电商系统”。“微信小程序系统教程[阶段]全套课程”包含:1.微信小程序系统教程[阶段]_客服消息2.微信小程序系统教程[阶段]_微信支付3.微信小程序系统教程[阶段]_九宝电商系统学习“微信小程序系统教程[阶段]”要求有微信小程序的基础。建议先学习“微信小程序系统教程[初级阶段]”、“微信小程序系统教程[中级阶段]”,后在报名“微信小程序系统教程[阶段]”。阶段讲解的客服消息,是针对小程序的。后台程序用接近底层的技术,没有使用三方技术。这样降低同学们学习成本。微信支付,这部分课程很有难度,要求同学们认真听讲,有不会的技术问题可以请教老师。购买课程后请联系老师,提供单号,给你源程序。九宝电商系统是一套十分适和学习、项目的课程。既可以系统的学习微信小程序相关知识,还可以修改后上线。“微信小程序系统教程[中级阶段]——核心技术”重点讲解微信小程序事件、组件、API微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识。购买课程的同学,可赠送就九宝老师编写的《微信小程序开发宝典》。购课请咨询qq2326321088

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧