【问题标题】:C language how to scan file with integers in reverse order?C语言如何以相反的顺序扫描带有整数的文件?
【发布时间】:2018-12-04 16:33:18
【问题描述】:

我有一个包含数字的小文件,由新行/空格分隔。 我正在寻找一种扫描文件的方法,但相反。

Input: 1 2 3 4 5 1025
Output: 1025 5 4 3 2 1

注意!在下面的代码中,我需要修改scanf。我需要保持 printf 不变!我不需要将 1024 转换为 4201,整数保持不变。只是他们的顺序发生了变化。

代码:

while (fscanf(input,"%d", &b) && !feof(input)) {printf("%d",b);}

【问题讨论】:

  • 将数字读入数组,并以相反的顺序打印数组。
  • 要么进行困难的回溯,要么将其读入数组并以相反的顺序打印。
  • 您的循环条件错误。如果发生输入错误,您的代码将进入无限循环。

标签: c while-loop printf scanf


【解决方案1】:

你的筹码够大吗?

void printreverse(FILE *f) {
    int n;
    if (fscanf(f, "%d", &n) != 1) return;
    printreverse(f); // recursive call
    printf("%d", n);
}

https://ideone.com/1jejpM

【讨论】:

  • 我本来打算建议通过递归进行反转,这里是
  • printf("%d", n); -> printf("%d ", n);,输出会更好看。
  • @Jabberwocky OP 说:“我需要保持 printf 不变!”
  • @pmg 是的,但是在他的示例输出中,数字之间有 are 个空格。好的,问题中的要求不是第一次矛盾。
猜你喜欢
  • 2017-07-06
  • 1970-01-01
  • 1970-01-01
  • 2018-09-13
  • 2011-01-19
  • 2015-11-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多