C - entrada e saída

Quando dizemos Input, significa inserir alguns dados em um programa. Uma entrada pode ser fornecida na forma de um arquivo ou da linha de comando. A programação C fornece um conjunto de funções integradas para ler a entrada fornecida e alimentá-la ao programa de acordo com o requisito.

Quando dizemos Output, significa exibir alguns dados na tela, impressora ou em qualquer arquivo. A programação C fornece um conjunto de funções integradas para a saída dos dados na tela do computador, bem como para salvá-los em arquivos de texto ou binários.

Os Arquivos Padrão

A programação C trata todos os dispositivos como arquivos. Portanto, dispositivos como a tela são endereçados da mesma forma que os arquivos e os três arquivos a seguir são abertos automaticamente quando um programa é executado para fornecer acesso ao teclado e à tela.

Arquivo Padrão Ponteiro de Arquivo Dispositivo
Entrada padrão Stdin Teclado
Saída padrão stdout Tela
Erro padrão stderr Sua tela

Os ponteiros de arquivo são os meios para acessar o arquivo para fins de leitura e gravação. Esta seção explica como ler valores na tela e como imprimir o resultado na tela.

As funções getchar () e putchar ()

o int getchar(void)A função lê o próximo caractere disponível na tela e o retorna como um inteiro. Esta função lê apenas um único caractere por vez. Você pode usar esse método no loop caso queira ler mais de um caractere da tela.

o int putchar(int c)função coloca o caractere passado na tela e retorna o mesmo caractere. Esta função coloca apenas um único caractere por vez. Você pode usar este método no loop caso deseje exibir mais de um caractere na tela. Verifique o seguinte exemplo -

#include <stdio.h>
int main( ) {

   int c;

   printf( "Enter a value :");
   c = getchar( );

   printf( "\nYou entered: ");
   putchar( c );

   return 0;
}

Quando o código acima é compilado e executado, ele espera que você insira algum texto. Quando você insere um texto e pressiona Enter, o programa prossegue e lê apenas um único caractere e o exibe da seguinte maneira -

$./a.out
Enter a value : this is test
You entered: t

As funções gets () e puts ()

o char *gets(char *s) função lê uma linha de stdin no buffer apontado por s até uma nova linha de terminação ou EOF (Fim do arquivo).

o int puts(const char *s) função escreve a string 's' e 'a' final de nova linha para stdout.

NOTE:Embora o uso da função gets () esteja obsoleto, em vez de usar a função gets, você deseja usar fgets () .

#include <stdio.h>
int main( ) {

   char str[100];

   printf( "Enter a value :");
   gets( str );

   printf( "\nYou entered: ");
   puts( str );

   return 0;
}

Quando o código acima é compilado e executado, ele espera que você insira algum texto. Quando você insere um texto e pressiona enter, o programa prossegue e lê a linha completa até o fim e a exibe da seguinte maneira -

$./a.out
Enter a value : this is test
You entered: this is test

As funções scanf () e printf ()

o int scanf(const char *format, ...) função lê a entrada do fluxo de entrada padrão stdin e verifica essa entrada de acordo com o format forneceu.

o int printf(const char *format, ...) função escreve a saída para o fluxo de saída padrão stdout e produz a saída de acordo com o formato fornecido.

o formatpode ser uma string constante simples, mas você pode especificar% s,% d,% c,% f, etc., para imprimir ou ler strings, inteiro, caractere ou flutuante, respectivamente. Existem muitas outras opções de formatação disponíveis que podem ser usadas com base nos requisitos. Vamos agora prosseguir com um exemplo simples para entender melhor os conceitos -

#include <stdio.h>
int main( ) {

   char str[100];
   int i;

   printf( "Enter a value :");
   scanf("%s %d", str, &i);

   printf( "\nYou entered: %s %d ", str, i);

   return 0;
}

Quando o código acima é compilado e executado, ele espera que você insira algum texto. Quando você insere um texto e pressiona enter, o programa prossegue e lê a entrada e a exibe da seguinte maneira -

$./a.out
Enter a value : seven 7
You entered: seven 7

Aqui, deve-se observar que scanf () espera entrada no mesmo formato que você forneceu% s e% d, o que significa que você deve fornecer entradas válidas como "string inteiro". Se você fornecer "string string" ou "inteiro inteiro", será considerado como uma entrada errada. Em segundo lugar, ao ler uma string, scanf () para de ler assim que encontra um espaço, então "isto é um teste" são três strings para scanf ().