繁体   English   中英

C-使用getchar和putchar交换字符

[英]C - Swap chars using getchar and putchar

这是为了功课。 必须仅使用getchar和putchar

int main(void) {
int pch; //first
int ch; //second


while(1){
    pch=getchar();
    ch=getchar();


    if(((pch>='A' && pch<='Z')) && ((ch>='A' && ch<='Z'))){
        putchar(ch);
        putchar(pch);
    }

    if((pch>='A' && pch<='Z') && ch=='\n') putchar(pch);
    if(pch=='\n' || ch=='\n') break;
}
return EXIT_SUCCESS;
}

我需要使用getchar和putchar交换字符。 例如PARIS APIRS

它有效,但是当我偶数个字母4,6,8 ...时,我需要按两次ENTER键。 如何消除这种行为? 有什么方法可以杀死\\ n以获得getchar

我输入了PAR,按下一次进入并获得了APR。 我相信这就是您想要的。

有什么方法可以杀死\\ n以获得getchar吗?

您需要执行以下操作:

char1 = getchar();
getchar(); // To kill `\n`
char2 = getchar();
getchar(); // To kill `\n`

来源

同样按照mch的建议,您可以执行以下操作:

if(pch == '\\n') break; pch=getchar();

因此,您应该将程序更改为此:

#include <stdio.h>
int main(void) {
  int pch;  //first
  int ch;  //second

  while (1) {
    pch = getchar();
    if (pch == '\n') // when you hit enter once, break the loop
          break;
    ch = getchar();

    if (((pch >= 'A' && pch <= 'Z')) && ((ch >= 'A' && ch <= 'Z'))) {
      putchar(ch);
      putchar(pch);
    }

    if ((pch >= 'A' && pch <= 'Z') && ch == '\n')
      putchar(pch);
    if (pch == '\n' || ch == '\n')
      break;
  }
  return 0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM