如何在C中读取无限个字符
如何在不指定大小的情况下将无限字符读入 char* 变量?
例如,假设我想读取也可能需要多行的员工的地址。
How to read unlimited characters into a char*
variable without specifying the size?
For example, say I want to read the address of an employee that may also take multiple lines.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您必须首先“猜测”您期望的大小,然后使用
malloc
分配一个那么大的缓冲区。如果结果太小,您可以使用realloc 来调整缓冲区的大小,使其更大一些。示例代码:这只是我的想法,并且可能(阅读:可能)包含错误,但应该给您一个好主意。
You have to start by "guessing" the size that you expect, then allocate a buffer that big using
malloc
. If that turns out to be too small, you userealloc
to resize the buffer to be a bit bigger. Sample code:This is just off the top of my head, and might (read: will probably) contain errors, but should give you a good idea.
只需回答 Ex7.1,《Beginning C》第 330 页,作者:Ivor Horton,第三版。花了几周时间才锻炼出来。允许输入浮点数,而无需提前指定用户将输入多少个数字。将数字存储在动态数组中,然后打印出数字和平均值。在 Ubuntu 11.04 中使用 Code::Blocks。希望有帮助。
Just had to answer Ex7.1, pg 330 of Beginning C, by Ivor Horton, 3rd edition. Took a couple of weeks to work out. Allows input of floating numbers without specifying in advance how many numbers the user will enter. Stores the numbers in a dynamic array, and then prints out the numbers, and the average value. Using Code::Blocks with Ubuntu 11.04. Hope it helps.
如何在堆栈上放置一个 1KB 缓冲区(或 4KB),读取该缓冲区直到找到地址末尾,然后分配一个正确大小的缓冲区并将数据复制到其中?从函数返回后,堆栈缓冲区就会消失,您只需调用一次
malloc
。How about just putting a 1KB buffer (or 4KB) on the stack, reading into that until you find the end of the address, and then allocate a buffer of the correct size and copy the data to it? Once you return from the function, the stack buffer goes away and you only have a single call to
malloc
.