C 读取文本文件时写入数组的值相同

C 读取文本文件时写入数组的值相同,c,C,我尝试使用以下代码将文本文件读入数组,但数组的每个值都会从文本文件中读取最后一行 #include <stdio.h> int main() { char line[255]; char *kernal[3]; FILE *fpointer_1 = fopen("sample.txt", "r"); for (int i = 0; i <= 2; i++) { fgets(line, 255, fpointer_1

我尝试使用以下代码将文本文件读入数组,但数组的每个值都会从文本文件中读取最后一行

 #include <stdio.h>

int main()
{
    char line[255];
    char *kernal[3];

    FILE *fpointer_1 = fopen("sample.txt", "r");

    for (int i = 0; i <= 2; i++)
    {
        fgets(line, 255, fpointer_1);

        kernal[i] = line;
    };

    fclose(fpointer_1);

    printf("1st value : %s\n", kernal[0]);
    printf("2nd value : %s\n", kernal[1]);
    printf("3rd value : %s\n", kernal[2]);
    return 0;
}
#包括
int main()
{
字符行[255];
char*内核[3];
文件*fpointer_1=fopen(“sample.txt”、“r”);

对于(int i=0;i而言,问题在于
kernal[i]=line
行。您总是指向同一行。您需要为它分配一个内存,然后使用
strcpy
数组中的内容复制到新分配的内存中

kernal[i]=malloc(strlen(line)+1);
strcpy(核[i],行];

请不要发布代码的图像;以纯文本形式发布代码。除此之外,我们不能简单地复制和测试图像代码(在手机上也无法读取)。既然您将每一行读入变量
line
,您如何期望它同时保存三个不同的值?您在每次迭代中覆盖
line
,切换到
char-line[3][255];
fgets(line[i],…
每个
kernal[i]
都是一个指针。每个
kernal[i]
指向数组的第一个元素
。您需要安排一些内存并从
那里复制数据(并使
内核
指针指向那里)。可能
字符内核[3][255];
strcpy(内核[i],行);