【问题标题】:Printing Strings diagonaly instead of on the left对角线而不是左侧打印字符串
【发布时间】:2019-03-24 16:37:04
【问题描述】:

可以说,我想逐页打印大量字符串,但要跳过我不想按 Enter 键的页面。我在网上找到的唯一合理的解决方案是使用“stty raw”。 也就是说,我最终得到了这段代码

void printAux(char** Strings, int init, int fim){
  system("clear");
  for(int i = init; i < fim; i++){
    printf("%s\n", Strings[i]);
  }
}

void printStrings(char** Strings, int tam){

  int j = 0;
  int i = 0;
  char c;

  system("stty raw");
  printAux(Strings, 0, (tam >= 20 ? 20 : tam));
  while((c = getchar()) != 'q'){
    if(c == 'a'){
      i-= 20;
      i = (i < 0 ? 0 : i);
    }
    else if (c == 'd'){
      i += 20;
      i = (i > tam ? i - 20 : i);
    }
    printAux(Strings, i, (i + 20 >= tam ? tam : i + 20));
  }

  system("stty cooked");

}

它可以很好地打印它们,但是,它会像这样打印它们

1
 2
  3
   4
    5
     6
      7
       8
        9
         10
           11
             12
               13
                 14
                   15
                     16
                       17
                         18
                           19
                             20

行从最后一行结束的行开始打印。 我希望它都在屏幕的左侧。 任何帮助将不胜感激

【问题讨论】:

  • 可能是printf("%s\r\n", ...);?
  • 很好@pmg。现在完美运行....谢谢
  • 太棒了!随意接受你的答案:)

标签: c string printing


【解决方案1】:

解决办法是替换

printf("%s\n", String[i]);

printf("%s\r\n", String[i]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-16
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-31
    • 1970-01-01
    相关资源
    最近更新 更多