无法理解C程序中Append()中的代码

Unable to understand the code in the Append() in a C program

本文关键字:Append 代码 程序      更新时间:2023-10-16

我正在试着阅读我在网上遇到的一个程序。我一直在努力阅读和理解这个程序,我已经理解了所有的代码行,除了下面给出的行。如果你们能帮我理解这些台词,我将不胜感激。完整的代码可以在这个站点

找到。
    while(1)
  {
   c=getch();
   if(c==19)
    goto end3;
   if(c==13)
   {
    c='n';
    printf("nt");
    fputc(c,fp1);
   }
   else
   {
    printf("%c",c);
    fputc(c,fp1);
   }
  }
while(1)                  // Loop forever.
   {
   c=getch();             // read a character from stdin.
   if(c==19)              // If the character read is 'CTRL-S',
      goto end3;          //   jump to the 'end3' label.
   if(c==13)              // If the character read is '(Carriage) Return',
      {
      c='n';             //    Set 'c' to be a C 'newline' character.
      printf("nt");     //    Write a 'newline' and a 'tab' character to stdout.
      fputc(c,fp1);       //    Write the value of 'c' to the fp1 stream.
      }
   else                   // If the character read is -not- '(Carriage) Return',
      {
      printf("%c",c);     //    Write the character to stdout.
      fputc(c,fp1);       //    Write the value to the fp1 stream.
      }
   }

因为这是一些非常丑陋的代码,这里是一个更简单的重写:

while(1)
{
    if((c=getch()) == 19)  // If Ctrl+S, end this While-Loop
    { 
        break; // Goto is EVIL!
    }
    fputc((c=='r')? (puts("nt"), 'n') :      // Convert Return to n, OR
                     (putchar(c),     c ), fp1); // Put out exactly the char that was input.
}