Как я могу взять символ возврата в массив символов на языке C и выполнить условие IF на основе символа возврата? - PullRequest
0 голосов
/ 16 апреля 2020

Мой пример кода выглядит следующим образом:

#include <stdio.h>
#include <stdio.h> 
#include <stdlib.h>
#define MAX_LIMIT 20 
int main() 
{ 
 char str[10]; 
 printf("\nEnter any character");
 fgets(str, 10, stdin);
 ***if(str[0] == '\b'){
    "Function call here"
    printf("\nbackspace is entered");*** 
 printf("%s", str);
 //Below part is for string to int conversion// 
 int integer;
 sscanf(str, "%d", &integer);
 printf("\nNew integer is %d",integer);

 return 0; 

Моя главная проблема в условии if .... Пожалуйста, ведите меня .... Я буду очень благодарен всем вам

1 Ответ

0 голосов
/ 16 апреля 2020

В каноническом режиме драйверов терминалов (также называемых «готовым» режимом) управляющие символы обрабатываются перед передачей в программу. См. term ios для получения дополнительной информации.

Однако вы можете отключить интересующие вас контрольные символы. Например, вы можете отключить DEL, чтобы получить пробелы:

#include <stdio.h>
#include <termios.h>
#include <unistd.h>

int main()
{
    struct termios old;
    /* Get current settings. */
    tcgetattr(STDIN_FILENO, &old);

    struct termios new = old;
    new.c_lflag = ICANON;
    /* Disable DEL. */
    new.c_cc[VERASE] = 0;

    tcsetattr(STDIN_FILENO, TCSANOW, &new);

    char str[10] = {0};
    printf("\nEnter:");
    fgets(str, 10, stdin);
    if(str[0] == 127) {
        printf("backspace is entered\n");
    }

    /* Restore old settings. */
    tcsetattr(STDIN_FILENO, TCSANOW, &old);
}
...