gpt4 book ai didi

C:如何从未知大小的文本文件中仅输入 int 数据

转载 作者:行者123 更新时间:2023-12-02 01:29:12 25 4
gpt4 key购买 nike

void inputData()
{
FILE* fp = fopen("input_001.txt", "r");
if(fp == NULL)
{
exit(FILE_FAILED_TO_OPEN);
}
fseek(fp, 0, SEEK_END); //set position to end of file
int size = ftell(fp);
if(size == 0)
{
exit(PARSING_ERROR_EMPTY_FILE);
}
int i;
char *input;
char *errPtr = NULL;
char *data;
fgets(input, 64, fp);
for(i = 0; i < size; i++)
{
strtol(input[i], *errPtr, 10);
//testing the output
printf("%d\n", input[i]);
}

fclose(fp);
if(fclose(fp) != 0)
{
exit(FILE_FAILED_TO_CLOSE);
}
}

我正在尝试将未知大小的文本文件中的数据输入到数组中,并且只保留整数。文本文件的格式是每行一个数字,可以有任意行数。我已经包括了我尝试输入数据的尝试,但我的编码不太顺利。我想使用 fgets() 然后使用 strtol() 将我从 fgets() 获得的行转换为整数并将它们放入一个数组中,以便我可以使用该数据。感谢您的帮助!

最佳答案

您还没有为 input 分配任何指向的空间。我看到你的较早的版本有一个 malloc;你可以使用它,或者只是一个 char数组。

您是要使用数据吗?因为你还没有。

fgets 一次最多读取一行,所以你需要把你的读取在一个循环中。

您似乎多次将字符串转换为数字。为了例如,如果第一行是 "12345",则此代码将得到 12345,然后是 2345345 等。这可能不是您的意图。

您正在将 i 递增到 sizesize 是文件大小,可能相当大,但您最多只能将 64 个字符读入缓冲。 (或者,如果已经分配了空间,将会有。)

简而言之,这段代码很困惑,我建议从头开始刮。决定是要一次读取整个文件,还是一个一次排队;我推荐后者,它占用更少的内存并且是更简单。如果你想将它们存储在一个数组中,你可以这样做malloc 然后根据需要 realloc 来动态增长数组。

关于C:如何从未知大小的文本文件中仅输入 int 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35143937/

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