gpt4 book ai didi

c - 从 C 文本文件中读取值流

转载 作者:行者123 更新时间:2023-11-30 17:15:40 33 4
gpt4 key购买 nike

我有一个文本文件,其中可能包含 1 个或最多 400 个数字。每个数字都用逗号分隔,分号用于指示数字流的结尾。目前我正在使用 fgets 逐行读取文本文件。因此,我使用 1024 个元素的固定数组(文本文件每行的最大字符数)。这不是实现这一点的理想方法,因为如果在文本文件中仅输入一个数字,则 1024 个元素的数组将毫无意义。有没有办法将 fgets 与 malloc 函数(或任何其他方法)一起使用来提高内存效率?

最佳答案

如果您正在考虑在生产代码中使用它,那么我会要求您遵循评论部分中的建议。

但是如果您的需求更多的是学习或学校,那么这里有一个复杂的方法。

伪代码

1. Find the size of the file in bytes, you can use "stat" for this.
2. Since the file format is known, from the file size, calculate the number of items.
3. Use the number of items to malloc.

瞧! :p

如何查找文件大小

您可以使用stat,如下所示:

#include <sys/stat.h>
#include <stdio.h>

int main(void)
{
struct stat st;

if (stat("file", &st) == 0) {
printf("fileSize: %d No. of Items: %d\n", (st.st_size), (st.st_size/2));
return st.st_size;
}

printf("failed!\n");
return 0;
}

该文件运行时将返回文件大小:

$> cat file
1;
$> ./a.out
fileSize: 3 No. of Items: 1

$> cat file
1,2,3;
$> ./a.out
fileSize: 7 No. of Items: 3

免责声明:这种最小化预分配内存的方法是最佳方法吗?天上无路可走! :)

关于c - 从 C 文本文件中读取值流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29906555/

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