【发布时间】:2019-02-04 09:23:14
【问题描述】:
我创建了一个程序,该程序应该从用户那里获取输入并将它们写入文本文件。现在我正在制作另一个程序来从文件中读取这些记录并对其进行排序。
所以我有,例如:
User three; Test three; 30
User one; Test; 51
User two; Test two; 40
程序应该根据它们末尾的数字对这些记录进行排序,所以应该是:
User one; Test; 51
User two; Test two; 40
User three; Test three; 30
这是我目前的工作,基本上我创建了一个char one 变量,它将存储fgets 给出的数据并打印它。两个问题:char one有一个固定变量(255),所以如果记录长于255,就会报错。
第二个问题是我不知道如何处理文件的每条记录都有一个变量,我可以打印整个文件但我不知道如何根据最后一个数字比较数据,任何建议?我期待着使用冒泡排序。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char one[255];
FILE * fpointer = fopen("record.txt", "r");
while (!feof (fpointer) ) {
fgets(one, 255, fpointer);
printf("%s", one);
}
fclose(fpointer);
return 0;
}
【问题讨论】:
-
请参阅Why is
while ( !feof (file) )always wrong? 循环可以改进为while (fgets(one, 255, fpointer) != NULL) { printf("%s", one); } -
顺便说一句,最好不要编辑此处发布的代码,否则 cmets 将没有任何意义。
-
知道了,只改了原来的!
-
您可以从末尾搜索每个输入字符串,找到数字的开头,然后应用
sscanf提取它。 -
如果您不懂 C 或编程,这实际上是一项相当广泛的任务。您可以从创建以下单独的程序开始。 1. 只需阅读并打印每一行。 2. 读取每一行并将其存储到分配有
malloc的缓冲区中,然后从缓冲区中打印出来。 3. 读取每一行,从中解析数字并打印出来(编写一个函数,获取该行并返回整数)。 4. 有一个指向行的 char 指针数组,并将所有行读取到分配有malloc的缓冲区中,并将它们放入数组中,然后打印数组中的行。 5. 使用 3 在 4 之上添加排序。