c - 需要帮助将文件内容扫描到指针数组中

标签 c arrays pointers input

我需要读入一个文件,文件的每一行都有一个字符串(最多 50 个字符长),并且我需要将每一行存储到一个指针数组中。因此,如果文件内容为:

1234
abcd
5667
...

那么数组(称为函数)将是 *functions[0] = 1234,*functions[1]= abcd 等等...

我现在已经尝试了一些东西,但似乎无法让它发挥作用。这是我的代码的开始,或者至少是与我的困惑有关的部分:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 201            /* 200 is th emax number of lines in the file*/
#define MAX_FUNCTION_LENGTH 51    /* each line is at ax 50 characters long

main() {
    char func[MAX_FUNCTION_LENGTH]
    char * functions[MAX_SIZE]      /* this is my ragged array*/    
    FILE * inf;
    inf =fopen("list.txt", "r");

我尝试了一些方法,但无法使 *functions 正确存储值。有人可以帮我吗? :)

最佳答案

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 201

int main( int argc, char **argv ) {
    FILE *fp = fopen ( "D:\\personal\\input.txt","r");
    if ( !fp )
        exit ( -1 );
    char line [50];
    char *functions[MAX_SIZE];
    int index = 0;
    while (!feof(fp)) {
        fgets (line , 50 , fp);
        functions[index++] = strdup (line);
    }
    fclose ( fp );
    for ( int i = 0; i < index; i++) {
        printf ( "[%d] -> [%s]\n", i, functions[i]);
    }
    for ( int i = 0; i < index; i++) {
           free ( functions[i]);
}
}

关于c - 需要帮助将文件内容扫描到指针数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6014194/

相关文章:

c - 是否需要保留填充位?

c - 从文件中读取字符。 C语言

arrays - 如何在不对数组进行排序的情况下在未排序的数组中找到第 k 个最小整数?

c++ - 指向未指定大小 "(*p)[]"的数组的指针在 C++ 中非法但在 C 中合法

c - 链接 c 和程序集

无法复制字符串的一部分

java Hangman - 计算正确的用户猜测

c - 如何使用结构指针变量的typedef指向同一个结构变量

转换并添加指向不同大小类型的指针

C 指针(简单程序)