将文本文件行存储到数组中

问题描述 投票:-1回答:1

ı试图从文件中获取文本并将其存储到2d数组中,每行将是不同的行,每个单词将是不同的列,我当时想先存储行然后将单词分开,但这在while循环可以正确打印,但是在循环数组之外只有最后一行有帮助吗?

    char **arr;
    arr=malloc(sizeof(int)*line);
    int a ;
    for(a=0;a<line;a++){
        arr[a]=(char*)malloc(sizeof(int)*maxword);
    }
    int i=0;
    rewind(fp);
    while(fgets(command,count, fp)!=NULL) {
        arr[i]=command;
        printf("%s",arr[i]);

        i++;

    }
c arrays
1个回答
0
投票

这里的问题是您尝试将输入command字符串复制到字符串arr数组中的方式。您所在的行:

arr[i]=command;

正在将字符串指针arr[i]的值分配给command处的字符串指针,该值是command字符串的开头。然后,当您在循环[中将此内容打印出来时,它就可以正确显示,因为您刚刚读入了该字符串。

但是,在循环的每次迭代中,您都将给出'next'arr[i]

<< [同一指针

command字符串的开头)。因此,当您在循环结束后再打印出每个arr[i]字符串时,每个将指向同一字符串,它将具有上次读取的command的值。相反,在循环中,您应该使用以下内容替换上面的行:strcpy(arr[i], command);

这将[command

复制内容
到由arr[i]索引的字符串。

尝试一下,看看!并随时要求进一步的澄清和/或解释。

© www.soinside.com 2019 - 2024. All rights reserved.