社区
C语言
帖子详情
请教一段C代码
longaiting
2008-03-22 07:35:13
1. 从命令行读取任意长度的字符串,利用malloc和realloc为该字符串分配内存空间,将该字符串保存在内存中,并用printf输出
...全文
594
31
打赏
收藏
请教一段C代码
1.从命令行读取任意长度的字符串,利用malloc和realloc为该字符串分配内存空间,将该字符串保存在内存中,并用printf输出
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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)
-C语言初学者学习
代码
.zip
-C语言初学者学习
代码
搭建一个简易的C语言平台
搭建这样一个简单的c语言学习环境,可以深入研究c语言的,如果将tc 2.0中的文件都放在一起,根本无法判别是哪些文件对程序的运行有影响,不利于研究c语言开发环境。搭建这样一个简单的c语言环境是为了更方便的了解程序的生成过程。这样做有这样的目的:研究过程清晰明了,有利于从本质上解决问题。
请教
LUA高手
一段
代码
,希望帮忙谢谢!
以下是
一段
LUA的
代码
,
请教
高手“perm{"a", "b", "c"}”为什么能返回一个tablefunction permgen (a, n) if n == 0 then coroutine.yield(a) else for i=1,n do -- put i-th element as the last one a[n], a[i] = a[i], a[n] --...
C语言错误c2063,
请教
C语言中关于将二维数组复制到一个三维数组的问题
请教
C语言中关于将二维数组复制到一个三维数组的问题小白正在填写
一段
代码
,是有点类似与俄罗斯方块的
一段
游戏
代码
,
代码
如下要求在增加参数,变量和函数的情况下完成此
代码
,只能填写// write appropriate codes here.部分。在填到int possible(int m[MR][MC],int b[BR][BC],int pcl[][MR][MC],int pcn)函数部分时,不...
c语言程序结果不一样,虚心
请教
:为什么同样的
代码
输出结果不一样?
该楼层疑似违规已被系统折叠隐藏此楼查看此楼#include # define N 50# define M 11void fun(int *a, int *b){int x;for(x=0;x<11;x++)b[x]=0;for(;*a;a++){if(*a<=9&&*a>=0)b[0]++;else if(*a<=19&&*a>...
C语言
70,020
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章