2012-03-20 354 views
-2

我已经做了很多阅读,并且很难找到一个简单的方法来做到这一点。C阅读文本文件

我有一个文本文件给我,我不知道大小,并包含可能或可能不在多行的字符串。 (即:dog cat mouse he went to the store.

我需要读取整个文件并以某种方式存储它,以便我可以一次处理一个单词。我知道我需要使用freadfgetc或类似的东西。但是我无法读取整个文件。

+0

你的数据是怎样的?如果你的数据是逐行的,你可以使用fgets。 – Teja 2012-03-20 20:39:45

+0

FILE * myfile; MYFILE =的fopen( “FILENAME.TXT”, “R”);现在我已经尝试了不同的fread,fgets,fgetc等,不管是什么也不读,或者是文件的一部分。我不知道下一步该怎么做,也无法得到明确的说明。另外,我不知道数据是如何组织的。它可以是一行,一行一行,或者各行的句子。 – clay123 2012-03-20 20:43:24

回答

1

使用的fscanf:

#define DEFAULT_SIZE 25 
#define MAX_WORD_LENGTH 25 

FILE *filePtr = fopen("/path/to/my/file.txt", "r"); 
char **readStrings = malloc(sizeof(char *) * DEFAULT_SIZE); 
int allocatedStringSize = DEFAULT_SIZE; 

int index = -1; 
do { 
    if (index >= allocatedStringSize) 
    { 
     allocatedStringSize += DEFAULT_SIZE; 
     readStrings = realloc(readStrings, sizeof(char *) * allocatedStringSize); 
    } 

    readStrings[++index] = calloc(MAX_WORD_LENGTH, sizeof(char)); 
    fscanf(filePtr, "%24s", readStrings[index]); 
} while (!feof(filePtr)); 

fclose(filePtr); 

注意这段代码没有错误与文件或malloc检查,这是给你的。