c - 将文件的每一行分配给数组的每个元素

标签 c arrays file

我对 C 编程很陌生,刚刚开始研究文件。我想知道是否可以将文件逐行(包括每行中的空格)读取到大小等于文件中行数的数组中。我真的不知道从哪里开始,也不知道这是否可能,所以任何指导将不胜感激。

示例

格式为的文本文件:

Computer Programming
Software Engineering
Computer Architecture

写入数组,使得:

char array[4];

array[0] = "Computer Programming";
array[1] = "Software Engineering";
array[2] = "Computer Architecture";

到目前为止我所拥有的是:

int main()
{
    char array[50];
    bool answer;

    FILE *classes;
    classes = fopen("classnames.txt", "r");

    if(classes == NULL){
        printf("\n ************* ERROR *************\n");
        printf("\n \"classnames.txt\" cannot be opened.\n");
        printf("\n         PROGRAM TERMINATED\n");
        exit(EXIT_FAILURE);
    }

接下来我想将每个类名写入数组的每个元素中。

最佳答案

是的,您只需将 array 声明为 char** 并在读取每一行时动态分配。例如

int MAX_NUM_LINES = 1000;
int MAX_LINE_LEN = 256;

char** array;
malloc(array, MAX_NUM_LINES*sizeof(char*));
fp = fopen(...);

int line_ct = 0;
char line[MAX_LINE_LEN];
while ( fgets(line, MAX_LINE_LEN, fp) != NULL )
{
   int len = strlen(line);
   malloc(array[line_ct], len * sizeof(char));
   strcpy(array[line_ct], line);
   line_ct++;
}

我实际上并没有尝试编译此代码,但类似的东西可以工作。您还可以通过首先快速浏览并计算行数来将 MAX_NUM_LINES 替换为实际值 - 这可能会更好。

关于c - 将文件的每一行分配给数组的每个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28841979/

相关文章:

python - 在python 2.7中将8位转换为字节数组

Javascript持久化>逻辑

arrays - 组合 0 到 (k-1) 的连接路径以构建 k 的路径

c - 为什么我不能将数组名称放在等号的左侧

python - 如何从 .t​​xt 文件中获取某个单词的开头和结尾

java - 写入文件时出错 - 文件加倍

javascript - 使用 Javascript 查找文件夹中的所有图像

c - C Primer Plus 6th 中的 C 语言数据类型

C 递归 : return statement

c - 的用法!!在检查标志时