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);
}
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报