gpt4 book ai didi

c - 我应该如何设置此缓冲区以自动扩展

转载 作者:行者123 更新时间:2023-12-04 05:47:14 24 4
gpt4 key购买 nike

我目前正在将一个日志解析脚本从 bash 重写为 C,我只是想知道我是否可以得到一些关于如何设置称为缓冲区的数组以动态扩展而不是限制为 1024 的建议,我想我会使用 malloc,但我不太确定如何为这个特定的应用程序正确实现它,非常感谢任何帮助,谢谢!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define _GNU_SOURCE
void main(int argc, char *argv[], char *envp[])
{
FILE *fd;
char *name;
name = getenv("MCEXEC_PLAYERNAME");
char *filename;
filename = malloc(sizeof "/home/minecraft/freedonia/playerdata/deathlog-.txt" - 1 + strlen(name) + 1);
if (!filename) exit(EXIT_FAILURE);
sprintf(filename,"/home/minecraft/freedonia/playerdata/deathlog-%s.txt",name);
char buff[1024];
if ((fd = fopen(filename, "r")) != NULL)
{
fseek(fd, 0, SEEK_SET);

while(!feof(fd))
{
memset(buff, 0x00, 1024);
fscanf(fd, "%[^\n]\n", buff);
}
printf("%s\n", buff);
}
else
printf( "fail" );
}

最佳答案

使用 malloc动态分配数组。

如果需要,realloc它改变它的大小。

编辑:

而不是:char buff[1024];
用:

char *buff;
buff = malloc(1024); //This will allocate 1024 chars

您可以使用另一个变量,如: char tmp[256];从文件中读取并将其存储到 buff .正如你所说的 tmp进入 buff , 注意 buff 中字符的大小.如有必要,请调用 realloc:
len = sizeof(buff);
buff = realloc(buff, len+256); //This will increase the buff size by 256

关于c - 我应该如何设置此缓冲区以自动扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10522460/

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