gpt4 book ai didi

c - 为存储为单个字符串的整行可变长度输入分配内存

转载 作者:太空宇宙 更新时间:2023-11-04 04:33:51 25 4
gpt4 key购买 nike

我正在学习 C,并且正在阅读有关什么是逐行输入的最佳方法的文章。

基本上我想创建包含整行输入的字符串。下面的问题没有回答我应该如何处理字符串的内存分配。

How can I scan strings with spaces in them using scanf()?

我应该先检测需要多少空间吗?如何?我是否应该在每次需要更多空间时重新分配?

请举个例子

输入来自文件或标准输入(两者都可能但不能同时)

最佳答案

以下重复分配缓冲区存储,直到读取输入(省略 malloc/realloc 检查):

char *myGetLine(FILE *in)
{
char *buffer= NULL;
int c, i, j;

i= 0; j= 0;
do
{
c= fgetc(in);
if (i==j) {
j += 1024;
buffer= realloc(buffer, j);
}
if (c==EOF) break;
buffer[i++]= c;
} while (1);
buffer[i]= '\0';
return buffer;
}

关于c - 为存储为单个字符串的整行可变长度输入分配内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33283175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com