我被要求构建一个 C 语言程序,该程序接收未知数量的正值和负值,在输入结束时,我不知道什么时候,我需要按照输入的顺序打印它们,不包括重复
例如:
Input: 1 8 9 3 3 5 8 -9 1
Output: 1 8 9 3 5 -9
如果不知道输入何时结束,我该怎么办?另外 - 我如何处理这个练习?我很想得到一些方向...我知道我们使用malloc
函数
我宁愿建议使用%d
格式说明符(int
类型是否足够?)和单个int
变量进行循环scanf()
。您需要检查其返回值,除非没有进一步有效的输入,否则它应该是一个(考虑通过feof
进行检查,您需要检测它的原因)。然后,您需要:
- 控制您的分配,例如
n
计数器和malloc()
和realloc()
呼叫。例如,为 1000 个int
元素分配空间,但如果数组要超过这个数字,则使用realloc()
进行更大的分配(依此类推)。请注意,操作系统资源有限,因此某些malloc()
或realloc()
可能会失败 - 注意可能的重复项。如果不需要一些省时的解决方案,那么每次遇到下一个数字时只需扫描整个数组
收到EOF
(文件结尾)字符。您可以使用此常量来检查它:
//get input
if(input == EOF) {
// print numbers
}
要在基于 UNIX 的计算机上对其进行测试,请在键入所有数字后按 Ctrl + D。此命令将发送 EOF 字符。
您可以使用 realloc 来减小数组的大小。
瑞洛克