使用fgets读取文件

时间:2014-07-21 10:26:40

标签: c arrays parsing fgets

我需要帮助我使用fgets读取文件的函数。我们得到了函数应该做什么的描述,所以我离开了,但它仍然无法正常工作。感谢您的帮助。

typedef struct StringArray_ {
    char **strings;
    int size;
}StringArray;

void create_commands_tree(Command **commands, const char *file);
void insert_into_commands_tree(Command** node, char** data);
StringArray* tokenizer (char *string, const char* delimiters);

void create_commands_tree(Command **commands, const char *file) {

    FILE *input;
    input = fopen(file, "r");
    char strings[256];
    StringArray *temp;

    while(fgets(strings,100,input)){

            temp = tokenizer(strings, "\n");
    }
            insert_into_commands_tree(temp, temp->strings);
}

该功能的描述如下:

Reads from a file the game commands the checker uses instead of using fscanf you 
are required to use fgets to read in an line of characters(a string including the 
newline character and the adds the null terminator) into a local buffer. That local 
buffer will be passed to our tokenizer function that will split the string passed into an 
array of strings based off our passed in delimiters. The delimiters that we are using 
are “,\n”. Pass the returned StringArray structure’s field strings to the 
insert_into_commands_tree with the commands double pointer. 

我想读的文件是

pickup,2
help,1
quit,1
load,2

1 个答案:

答案 0 :(得分:1)

阅读完每一行后,您需要将其传递给void insert_into_commands_tree(Command** node, char** data);,否则,在您的代码中,它只会传递您文件的最后一行

进行此更改并尝试 -

 while(fgets(strings,100,input)){

    temp = tokenizer(strings, "\n");
    insert_into_commands_tree(temp, temp->strings);
}