podem ser trocadasentre o arquivo e o programa. Um arquivo e dissociado de um fluxo atraves de uma operacaode fechamento de arquivo.Lendo e Escrevendo CaracteresUma das funcoes mais basicas de um sistema e a entrada e saida de informacoes emdispositivos. Estes podem ser um monitor, uma impressora ou um arquivo em disco. Vamosver os principais comandos que o C nos fornece para isto.getche e getchAs funcoes getch() e getche() nao sao definidas pelo padrao ANSI. Porem, elasgeralmente sao incluidas em compiladores baseados no DOS, e se encontram no header fileconio.h. Vale a pena repetir: sao funcoes comuns apenas para compiladores baseados em DOSe, se voce estiver no UNIX normalmente nao tera estas funcoes disponiveis.Prototipos:71int getch (void);int getche (void);getch() espera que o usuario digite uma tecla e retorna este caractere. Voce pode estarestranhando o fato de getch() retornar um inteiro, mas nao ha problema pois este inteiro e talque quando igualado a um char a conversao e feita corretamente. A funcao getche() funcionaexatamente como getch(). A diferenca e que getche() gera um "echo" na tela antes deretornar a tecla.Se a tecla pressionada for um caractere especial estas funcoes retornam zero. Neste casovoce deve usar as funcoes novamente para pegar o codigo da tecla extendida pressionada.A funcao equivalente a getche() no mundo ANSI e o getchar(). O problema comgetchar e que o caracter lido e colocado em uma area intermediaria ate que o usuario digiteum <ENTER>, o que pode ser extremamente inconveniente em ambientes interativos.putcharPrototipo:int putchar (int c);putchar() coloca o caractere c na tela. Este caractere e colocado na posicao atual docursor. Mais uma vez os tipos sao inteiros, mas voce nao precisa se preocupar com este fato. Oheader file e stdio.h.Lendo e Escrevendo StringsgetsPrototipo:char *gets (char *s);Pede ao usuario que entre uma string, que sera armazenada na string s. O ponteiro quea funcao retorna e o proprio s.gets nao e uma funcao segura. Por que? Simplesmente porque com gets pode ocorrerum estouro da quantidade de posicoes que foi especificada na string. Veja o exemplo abaixo:#include <stdio.h>int main(){char buffer[10];printf("Entre com o seu nome");gets(buffer);printf("O nome e: %s", buffer);return 0;}Se o usuario digitar como entrada:Renato Cardoso Mesquitaou seja, digitar um total de 23 caracteres: 24 posicoes (incluindo o \0 ) serao utilizadaspara armazenar a string. Como a string buffer[] so tem 10 caracteres, os 14 caracteresadicionais serao colocados na area de memoria subsequente a ocupada por ela, escrevendouma regiao de memoria que nao esta reservada a string. Este efeito e conhecido como72"estouro de buffer" e pode causar problemas imprevisiveis. Uma forma de se evitar esteproblema e usar a funcao fgets, conforme veremos posteriormente.putsPrototipo:int puts (char *s);puts() coloca a string s na tela.AUTO AVALIACAOVeja como voce esta. Escreva um programa que leia nomes pelo teclado e os imprima natela. Use as funcoes puts e gets para a leitura e impressao na tela.Entrada e Saida FormatadaAs funcoes que resumem todas as funcoes de entrada e saida formatada no C sao asfuncoes printf() e scanf(). Um dominio destas funcoes e fundamental ao programador.printfPrototipo:int printf (char *str,...);As reticencias no prototipo da funcao indicam que esta funcao tem um numero deargumentos