【发布时间】:2014-06-03 10:35:55
【问题描述】:
我想从文本文件中读取字符串(每行一个字符串/单词),然后按大小排列。
这是我的代码:
void readDic(char* file)
{
FILE* fr;
fr=fopen(file, "rt"); // opening the text file
char line[MAX_LINE_SIZE];
char* word;
while(fgets(line, MAX_LINE_SIZE, fr)!=NULL)
{
if(line[0]!='\n')
{
word = strtok(line, "\n"); //remove the newline from the string
// do stuff with word
}
}
fclose(fr);
}
虽然这段代码可以运行,但我读取的每个字符串,除了最后一个之外,都比文件中的字符串大小 +1。
例如,字符串“hello”的 strlen 如果它在文件最后一行之外的任何位置,则返回 6。 如果它在文件的最后一行,strlen 返回 5。
我做错了吗?
【问题讨论】:
-
需要更多代码。您的示例没有显示您如何确定单词的长度。
-
如果
strlen(x)(其中x应该是“hello”)返回6,那么检查第6 个字符是什么可能是个好主意。它可能类似于\r。 (进一步思考:这也可能在 first 位置。)