返回

C函数加载字符串数组中的文件内容

发布时间:2022-03-04 17:33:26 332
# golang# c++

我正试图做的是:正确地启动一个2D字符数组(字符串数组),将文件内容加载到数组中,在另一个函数中打断每个“\n”。

由于我们无法从C中的函数返回双数组,所以目前我正在尝试使用strncpy()逐行读取文件。我尝试了很多变体,但我一直在搞乱内存,所以我面临很多SEGFULTS和总线错误。

下面是一个模态,演示了我试图做的是多么简单:

int main()
{
  char *file_content[];
  load_file_to_array(file_content);
}

void load_file_to_array(char *to_load[]){
  // something to update file_content
}

编辑:我没有要求任何人为我写代码。我对这个特定主题的研究感到沮丧,所以我决定问问你们的想法。任何不同的方法或方法本身都值得赞赏。

我对我的方法有很好的预感,它完全偏离了轨道。

我看过很多关于动态记忆的帖子和文章。我发现最接近我想要完成的事情是邮递

编辑[2]:

正如@pm100在我尝试的评论中所解释的:

#include 
#include 
#define MAX_SIZE 255

void load_array(char *, char *[]);

int main(){

    // NULL terminate array
    char *fn = "text.txt";
    char *arr[MAX_SIZE] = { NULL };
    load_array(fn, arr);
}

void load_array(char *fn, char *fcontent[]){

    FILE * file = fopen(fn, "r");

    char line[MAX_SIZE];
    
    int i = 0;

    // read file line by line with fgets()
    while (fgets(line, sizeof(line), file)) 
    {
        // this part I'm not sure of. maybe setting with fgets makes more sense.
        fcontent[i] = line;
        i++;
        // realloc()
        fcontent = realloc(fcontent, sizeof (char*) * (i + 1));
        fcontent[i] = malloc(sizeof(char) * MAX_SIZE);
        // null terminate the last line
        *fcontent[i] = 0; 
    }

    fclose(file);
}
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像