社区
C语言
帖子详情
如果我不知道他要输入多少个字符,怎么开辟内存??
yesman
2002-12-21 01:34:51
char* ch = new char[20];
但是如果我不知道他要输入多少个字符呢
我怎么开辟内存比较好
...全文
111
11
打赏
收藏
如果我不知道他要输入多少个字符,怎么开辟内存??
char* ch = new char[20]; 但是如果我不知道他要输入多少个字符呢 我怎么开辟内存比较好
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
rushman
2002-12-21
打赏
举报
回复
不知道要输入多少字符,如何分配数组大小。
因此关键还是解决溢出问题。
还有一种方法,就是一个字符一个字符的读。也可以避开这个问题。这样控制起来很灵活,但是也很麻烦。
qqbigdog
2002-12-21
打赏
举报
回复
用动态组建一个数组,char *p=new char[];
就好拉
rushman
2002-12-21
打赏
举报
回复
不赞成开辟大缓冲区的方法。缓冲区再大也可能溢出。
而且在通常情况下,如果没有必要不要使用动态分配的内存,而应该尽量在栈中分配临时变量。
rushman
2002-12-21
打赏
举报
回复
补充一下:
如果缓冲不够大,还可以将一行分多次读取,再接到一起。
俞庆平
2002-12-21
打赏
举报
回复
同意::Zark(金陵五月)
通常的方法是先开256字节,在堆上,用NEW.因为通常这个是输入缓冲区的长度,如果发现不够了,再在堆上开256*2字节,将原来的内容拷贝进去,把原来的DELETE掉.如此反复.
rushman
2002-12-21
打赏
举报
回复
用fgets或cin.getline等类似的函数可以保证不溢出。
sjd163
2002-12-21
打赏
举报
回复
学习
Zark
2002-12-21
打赏
举报
回复
通常的方法是先开256字节,在堆上,用NEW.因为通常这个是输入缓冲区的长度,如果发现不够了,再在堆上开256*2字节,将原来的内容拷贝进去,把原来的DELETE掉.如此反复.
用VECTOR是个省事方法,但VECTOR的原理是以上所说的一样的.
prosong
2002-12-21
打赏
举报
回复
/**看看这个*/
#include "string.h"
#include "stdlib.h"
#include "stdio.h"
/*就假设回车结束*/
char* getData(){
int BUF_SIZE=16;
int bufSize = BUF_SIZE;
char ch = '\0';
int pos = 0; //字符所在的位置
char * tmp= 0; // 临时变量
char *buf = (char*)malloc(bufSize);
while((ch=getchar())!='\n'){
buf[pos]=ch;
pos++;
buf[pos] = '\0';
if(pos>=bufSize-1){
bufSize += BUF_SIZE;
tmp = (char*)malloc(bufSize);
strcpy(tmp, buf);
free(buf);
buf=tmp;
}
}
return buf;
}
int main(){
char* buf = getData();
printf("%s", buf);
free(buf);
return 0;
}
handboywj
2002-12-21
打赏
举报
回复
用char* ch = new char[20];
yatuor
2002-12-21
打赏
举报
回复
用vector
String最多能存多少
个字符
?从源码聊起
本文从源码和实际运行两方面探讨Java里String能存多少字符。理论上,因底层char数组长度限制,String最多能存2147483647
个字符
,但需4GB
内存
。编译期用字面量定义时,受class文件格式限制,最多存65534
个字符
。运行时受堆
内存
影响,通常远小于理论值。最后给出实际开发建议。
在Java中 String能存储多少
个字符
?
本文围绕Java中String类型展开,介绍其存储字符数量在编译和运行阶段的限制,如编译时受常量池大小限制,运行时受
内存
和整数最大值限制。还阐述了常量池大小确定方式、JVM和操作系统对其
内存
使用的限制与优化,以及UTF - 16编码下字符占用字节数,并给出提高性能和存储效率的优化方法。
QDebug可以输出多少
个字符
调试C++程序时,发现使用QDebug输出QJsonArray内容超过32767
个字符
时,终端不再显示。经测试,实际最大能容纳32766个字节,因包含结束符'
string 能存多少
个字符
本文探讨了字符串能存储多少字符的问题。从理论上看,其存储容量取决于计算机
内存
。在实际编程语言中,C、Python、Java对字符串存储容量各有限制。此外,字符编码方式如ASCII、UTF - 8、UTF - 16也会影响存储容量。实际编程处理大文本数据时需注意
内存
使用。
C //习题 8.19(1) 编写一个函数new,对n
个字符
开辟
连续的存储空间,此函数应返回一个指针(地址),指向字符串开始的空间。new(n)表示分配n个字节的
内存
空间。
本文提供C程序设计第四版谭浩强教材中习题8.19(1)的两种解答方案,介绍了如何通过自定义函数new为n
个字符
开辟
连续存储空间并返回指向该空间的指针。
C语言
70,038
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章