【发布时间】:2016-05-15 17:22:31
【问题描述】:
我想用 C 编写一个彩票程序,它将前几周的选定数字读入一个数组。我有一个文本文件,其中有 5 列用制表符分隔。我的问题如下:
- 我应该用什么分隔列? (例如逗号、分号、制表符或其他)
- 我应该在最后一行包含一种 EOF 吗? (例如 -1,“EOF”)是否有任何公认的或“官方”的约定可以做到这一点?
- 我应该使用哪个函数来读取数字?是否有任何正确或“可接受”的方式从文本文件中读取数据?
我曾经为“谁想成为亿万富翁”游戏编写了一个 C 程序。在那篇文章中,我使用了一种函数,将每一行读入一个数组,该数组大到可以容纳一整行。之后,我将其数据分成如下变量:
line: "text1";"text2";"text3";"text4"endline (-> line loaded into a buffer array)
text1 -> answer1 (until reaching the semicolon)
text2 -> answer2 (until reaching the semicolon)
text3 -> answer3 (until reaching the semicolon)
text4 -> answer4 (until reaching the end of the line)
endline -> start over, that is read a new line and separate its contents into variables.
它工作正常,但我不知道它对程序员来说是否足够好。 (顺便说一句,我还不是程序员,我在大学学习计算机科学)
欢迎任何答案和建议。提前感谢您的帮助!
【问题讨论】:
-
虽然“制表符”是“制表符”的基础,而 Unicode 定义了 U+0009 水平制表符和 U+000B 垂直制表符,但大多数人会写“制表符”或“制表位”而不是“制表符” ' 或 'tabulation'(对 U+000B 使用 'vertical tab')。
-
冒号
:或分号;是数字数据的绝佳分隔符。建议不要使用tabs,因为它们往往会使数据更难于人类阅读,因为它们在查看文本文件时不一定很容易看到。强烈建议通过换行符\n'分隔每组数字,因为这样可以通过调用fgets()读取整行并在内存中使用sscanf()或strtok()解析该行