gpt4 book ai didi

C - 从文本文件中读取多行

转载 作者:行者123 更新时间:2023-11-30 16:01:10 27 4
gpt4 key购买 nike

这很可能是一个愚蠢的问题!我有一个充满随机数的文本文件,我想将这些数字读入数组中。

我的文本文件如下所示:

1231231 123213 123123
1231231 123213 123123
0

1231231 123213 123123
1231231 123213 123123
0

依此类推..数字部分以0结尾

这是我迄今为止尝试过的:

FILE *file = fopen("c:\\Text.txt", "rt");
char line[512];

if(file != NULL)
{
while(fgets(line, sizeof line, file) != NULL)
{
fputs(line, stdout);
}
fclose(file);
}

这显然不起作用,因为我将每一行读入同一个变量中。

如何读取这些行,并在该行获取以 0 结尾的行时,然后将该文本存储到数组中?

感谢所有帮助。

最佳答案

您只需将从文件中读取的数字存储在某个永久存储器中即可!另外,您可能想解析各个数字并获取它们的数字表示形式。所以,三个步骤:

  1. 分配一些内存来保存数字。数组的数组看起来是一个有用的概念,每个数字 block 都有一个数组。

  2. 使用 strtok 将每一行标记为与每个数字对应的字符串。

  3. 使用 atoistrtol 将每个数字解析为整数。

这里有一些示例代码可以帮助您入门:

FILE *file = fopen("c:\\Text.txt", "rt");
char line[512];

int ** storage;
unsigned int storage_size = 10; // let's start with something simple
unsigned int storage_current = 0;

storage = malloc(sizeof(int*) * storage_size); // later we realloc() if needed

if (file != NULL)
{
unsigned int block_size = 10;
unsigned int block_current = 0;

storage[storage_current] = malloc(sizeof(int) * block_size); // realloc() when needed

while(fgets(line, sizeof line, file) != NULL)
{
char * tch = strtok (line, " ");
while (tch != NULL)
{
/* token is at tch, do whatever you want with it! */

storage[storage_current][block_current] = strtol(tch, NULL);

tch = strtok(NULL, " ");

if (storage[storage_current][block_current] == 0)
{
++storage_current;
break;
}

++block_current;

/* Grow the array "storage[storage_current]" if necessary */
if (block_current >= block_size)
{
block_size *= 2;
storage[storage_current] = realloc(storage[storage_current], sizeof(int) * block_size);
}
}

/* Grow the array "storage" if necessary */
if (storage_current >= storage_size)
{
storage_size *= 2;
storage = realloc(storage, sizeof(int*) * storage_size);
}
}
}

最后,您需要释放内存:

for (unsigned int i = 0; i <= storage_current; ++i)
free(storage[i]);
free(storage);

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

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