Нужна помощь в сканировании содержимого файла в массив указателей - PullRequest
0 голосов
/ 16 мая 2011

Мне нужно прочитать в файле, каждая строка файла имеет одну строку (максимум 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");

Я пробовал несколько вещей, но мне не удалось заставить * функции правильно хранить значения. Кто-нибудь может мне помочь? :)

1 Ответ

1 голос
/ 16 мая 2011
#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]);
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...