[Resolvido]Uso do teclado em C

Tenho que criar um “mini editor de texto” que usa algumas funcões como sair salvar…

ja tenho a base para meu programa mas queria adicionar comandos do teclado para deixar mas intuitivo por exemplo

ctrl + O == Salvar arquivo.

Mas eu não encontro nenhum dado na internet sobre uso do teclado na linguagem C alguém poderia passar uma apostila tutorial?
que mostre como fazer isso.

**Obs:**Dps de muitas pesquisas e sem nenhuma solução resolvi aprender sozinho e descobri que o ctrl ou o alt ou os dois segurando eles retornam um valor diferente

exemplo:
c = getch();

ctrl + A == 1
ctrl + alt + a == 129
a == 97

1 curtida

amigo achei essa apostila na internet espero que seja oque você precisa se não for desculpe qualquer coisa aqui está uma breve texto dela:

23.2.2 Marcando o final da entrada
Frequentemente quando você está digitando a entrada para o programa, você quer dizer ao programa que
você terminou de digitar o que queria. Em ambiente Unix, digitando ^D (segure a tecla de Ctrl e pressione
D) você diz ao programa que terminou a entrada do programa. Em ambiente MS-Windows, você faz isto
digitando ^Z (segure a tecla de Ctrl e pressione Z).
Isto envia uma indicação para a função getchar(). Quando isso ocorre, o valor de ch depois de executar
ch = getchar(); será um valor especial do tipo inteiro chamado EOF (o_que significa end of file – final do_
arquivo).
Considere o seguinte programa exemplo que conta o número de caracteres digitados (incluindo o caractere
de “próxima linha”):

#include <stdio.h>
int main()
{
int total = 0, ch;
/* Le o proximo caractere em ch e para quando encontrar final do arquivo */
while( (ch = getchar()) != EOF ) {
total++;
}
printf( "\n%d caracteres digitados\n", total );
}

Só para esclarecer: você deve teclar RETURN depois de entrar com o comando ^D (ou ^Z no MSWindows).

23.2.3 Para evitar problemas com a entrada…

(Observação: nesta seção, espaços em branco são relevantes e são mostrados como t)
Quando você executa um programa, cada caractere que você digita é lido e considerado como parte do
fluxo de entrada. Por exemplo, quando você usa getchar(), você deve teclar RETURN no final. Como
mencionado anteriormente, o primeiro caractere digitado é lido pelo getchar(). Mas, o caractere de nova
linha continua no fluxo de entrada (porque você teclou RETURN ).
De qualquer forma, se você executar um getchar() depois de um scanf() ou de um getchar() você lerá
o caractere de nova linha deixado no fluxo de entrada.
Da mesma forma, quando você usa scanf() para ler informações, ele somente lê o que é necessário. Se
voce usar scanf() para ler um número inteiro e digitar 42tt (seguido de RETURN ), o scanf() lê 42,
mas deixa tt (e o caractere de nova linha do RETURN ) no fluxo de entrada.
Outro caso “problemático” é quando o scanf() é usado num laço. Se você digitar um valor do tipo
errado, o scanf() lerá o valor errado e a execução do laço continuará na sentença após o scanf(). Na
próxima iteração do laço o scanf() vai tentar ler novamente, mas o “lixo” deixado da iteração anterior ainda
estará lá, e portanto a chamada corrente do scanf() também não dará certo. Este comportamento resultará
num laço infinito (um laço que nunca termina), ou terminará e terá um resultado errado.
Há uma maneira simples de resolver este problema; toda vez que você usar getchar() (para ler um
caracter só) ou scanf(), você deve ler todo o “lixo” restante até o caractere de nova linha. Colocando as
seguinte linhas após chamadas a getchar() ou scanf() o problema é eliminado.

Eu dei uma editada no texto para melhorar a interpretação do texto espero que tenha compreendido e gostado se foi isso que você queria. Desde já sucesso e um Grande abraço.

Aguardo resposta :wink:

1 curtida

A apostila encontra-se em : http://www.inf.ufpr.br/cursos/ci067/Docs/NotasAula.pdf
Pagina : 102

Capitulos:
23.2.2 Marcando o final da entrada
23.2.3 Para evitar problemas com a entrada…

Pesquisar por : ctrl

Obrigado!!

Inrelevante ao Topico►**//Salvando um link meu de pesquisa: https://newdstat.ru/gms/?state=4

Eu já tinha descoberto a um tempo o que estava precisando mas obrigado por tentar ajudar :sweat_smile:

1 curtida

De nada to sempre ai se precisar :wink:

1 curtida