2015-04-18 5 views
1

Я вхожу на вход с помощью функции getchar(), и когда я нажимаю кнопку ввода после ввода ввода, я получаю значение c внутри цикла как хорошее, которое я ввел, но когда я ввожу нецифровое число, и цикл прерывает ... последнее значение из i введено new line, которое имеет значение ASCII как 10.Как получить последнее значение в getchar()?

как я мог бы сохранить значение цифры. Все, что я хочу c иметь значение цифр после петля разбивает

#include<stdio.h> 
#include<ctype.h> 
main() 
{ 
    int c =0; 
    while(isdigit(c=getchar())) 
    { 
    printf("c is : %c\n",c); 
    } 
    printf("latest value of c(ASCII) is : %d\n",c); 
} 
+5

добавить переменную с задержкой 'int last' и обновить ее с помощью c, как вы идете. – amdixon

+0

, что на самом деле помогает –

+0

Так как теперь вы знаете, что проблема в том, что новая строка неправильно использовалась/пропущена, вы можете проверить (в оператор while()), чтобы увидеть, является ли ввод символов символом новой строки. (который является тем, что в настоящее время выходит из цикла), тогда прочитайте окончательное целое число, возможно, с помощью scanf() – user3629249

ответ

1

Один из способов TODO это добавить переменную лаг и записать это из с каждой итерации:

#include<stdio.h> 
#include<ctype.h> 
int main(int argc, char *argv[]) 
{ 
    int c = '0', lastchar = 0; 
    while(isdigit(c)) 
    { 
    if(!lastchar) 
    { 
     printf("c is : %c\n",c); 
    } 
    lastchar = c; 
    c = getchar(); 
    } 
    printf("latest value of c(ASCII) is : %d\n",lastchar); 
    return 0; 
} 
0
#include<stdio.h> 
#include<ctype.h> 
int main() 
{ 
    int c = 0, last = 0; 
    while(isdigit(c=getchar())) 
    { 
    printf("c is : %c\n",c); 
    last = c; 
    } 
    if (!last) 
      printf("latest value of c(ASCII) is : %d\n", last); 
    else 
      printf("No digits were entered\n"); 
    return 0; 
} 

Вы могли бы это сделать.

+0

. Вы действительно должны иметь основной возврат int как явно, так и в подписи, а также в теле. – martin

+0

@martin Да, так я обычно это делаю. Это только код OP, отредактированный. –

+0

Вы можете исправить код, некоторые люди этому почитают. – martin

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