gpt4 book ai didi

c - 如何在C中将数组插入数组

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

为了将一个数组插入到另一个数组中,可以做什么。我碰巧有一个我正在循环的文件,所以我现在的目标是获取文件中的每一行并将其放入一个数组(行数组)中。每行都有一些与学生及其测试结果相关的数据,例如:

Mark Zuckerberg 10.0 5.5 9.7

Bill Gates 10.0 1.5 6.7

示例代码:

FILE* file;
char buffer[256];
char arrayOfLines[500];
char line[256];

file= fopen("I:\\students.txt","r+");

/* Helps to iterate through each line */
while (fgets(buffer, sizeof(buffer), file)) {
//some logic to-be-coded
line = buffer; // just an idea does not work
arrayOfLines[i] = line; // just an idea does not work
}

预期结果:

arrayOfLines[] = {" Mark Zuckerberg 10.0 5.5 9.7", "Bill Gates 10.01.5 6.7" };

我当然知道这在某种程度上很容易实现,但是在使用 java 很长时间后发现有点棘手,有人可以帮我解决这个问题吗?在迭代和阅读方面一切正常。然而,当涉及到“播放”每行时,它变得令人毛骨悚然。也许我需要改变我的方法,欢迎任何帮助。

最佳答案

当您尝试分配数组名称时,它们会退化为指针。为了将 buffer 的内容复制到另一个 char[] 变量,您必须使用 memcpystrcpystrncpy

除此之外,确实您的arrayOfLines 变量有问题。它不是一系列的线。它是一个包含 500 个字符的数组,所以它甚至不足以容纳 2 行,您需要的是:

char array_of_lines[500][256];

要复制数据,我会使用:

memcpy(aray_of_lines[i], buffer, sizeof buffer);//where `i` is the current line, starting at 0

可能值得研究一下 malloc - 此处的行数组,因为此代码需要 128,000 字节的可用堆栈空间,以容纳 array_of_lines数组,所以我会写:

char *array_of_lines[500];
//in the loop:
array_of_lines[i] = malloc(strlen(buffer) + 1);
//check for NULL, and all that
strncpy(array_of_lines[i], buffer, strlen(buffer));

关于c - 如何在C中将数组插入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27143803/

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