C - 未知的输入大小

  • 本文关键字:未知 c malloc
  • 更新时间 :
  • 英文 :


我被要求构建一个 C 语言程序,该程序接收未知数量的正值和负值,在输入结束时,我不知道什么时候,我需要按照输入的顺序打印它们,不包括重复

例如:

Input: 1 8 9 3 3 5 8 -9 1
Output: 1 8 9 3 5 -9

如果不知道输入何时结束,我该怎么办?另外 - 我如何处理这个练习?我很想得到一些方向...我知道我们使用malloc函数

我宁愿建议使用%d格式说明符(int类型是否足够?)和单个int变量进行循环scanf()。您需要检查其返回值,除非没有进一步有效的输入,否则它应该是一个(考虑通过feof进行检查,您需要检测它的原因)。然后,您需要:

  1. 控制您的分配,例如 n计数器和malloc()realloc()呼叫。例如,为 1000 个int元素分配空间,但如果数组要超过这个数字,则使用 realloc() 进行更大的分配(依此类推)。请注意,操作系统资源有限,因此某些malloc()realloc()可能会失败
  2. 注意可能的重复项。如果不需要一些省时的解决方案,那么每次遇到下一个数字时只需扫描整个数组
您可能会

收到EOF(文件结尾)字符。您可以使用此常量来检查它:

//get input
if(input == EOF) {
 // print numbers
}

要在基于 UNIX 的计算机上对其进行测试,请在键入所有数字后按 Ctrl + D。此命令将发送 EOF 字符。

您可以使用 realloc 来减小数组的大小。

瑞洛克

相关内容

  • 没有找到相关文章

最新更新