2014-09-23 3 views
2

Это для домашней работы. Необходимо использовать только GetChar и putcharC - Обмен ключами с использованием 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

И это работает, но мне нужно нажать ENTER два раза, когда я даже число букв 4,6,8 .... Как устранить это поведение? Есть ли способ убить \ n для getchar

+1

я напечатал PAR, нажмите один раз ввести и получил апреле Это то, что вы хотите? Если нет, чего вы хотите? То же самое с PARA. Однажды я нажал кнопку и получил APAR. – gsamaras

+2

вы можете сделать 'if (pch == '\ n') break;' after 'pch = getchar();' – mch

+0

mch это работает, но можете ли вы объяснить мне, как это получилось. –

ответ

0

Я набрал PAR, ударил один раз и получил APR. Я считаю, что это то, что вы хотите.

Есть ли способ убить \ n для getchar?

Вам нужно сделать что-то вроде этого:

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

Source.

Кроме того, как было предложено МЧ, вы можете сделать:

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; 
} 
+0

на нечетных символах (3,5,7 ...) он работает, но вы уверены, что он работает даже. Когда я набрал PARA, я дважды попал в него. –

+0

Я думал, ты имел в виду другой путь, извините. Я думаю, что мой обновленный ответ - это то, что вы хотите. Кредиты идут в mch. Я думаю, что это хороший вопрос для первого, поэтому я собираюсь продвинуть вас @PedjaAleksic. – gsamaras

Смежные вопросы