Entrada e saída de dados em C
Entendendo printf e scanf
Depois de entender variáveis e tipos de dados, o próximo passo é aprender como um programa pode receber informações do usuário e mostrar resultados na tela. Em C, isso é feito principalmente por meio das funções printf e scanf.
printf→ saída de dadosscanf→ entrada de dados
A função printf é utilizada para exibir informações na tela. Ela pode mostrar textos, valores armazenados em variáveis e resultados de operações.
Um exemplo simples:
#include <stdio.h>
int main() { printf("Olá, Mundo!\n");
return 0;}O \n indica uma quebra de linha, fazendo com que o próximo conteúdo seja exibido na linha seguinte.
Quando queremos exibir o valor de uma variável, utilizamos especificadores de formato. Eles indicam ao printf qual é o tipo de dado que será exibido.
Alguns dos mais utilizados são:
%d→ número inteiro%f→ número decimal (float)%c→ caractere%s→ sequência de caracteres (string)
Por exemplo:
#include <stdio.h>
int main() { int idade = 25; float altura = 1.75; char opcao = 'S'; char nome[20] = "Ana";
printf("A idade de %s é: %d\n", nome, idade); printf("A altura é: %.2f\n", altura); printf("A opção é: %c\n", opcao);
return 0;}O .2 em %.2f indica que o número será exibido com duas casas decimais.
Enquanto o printf mostra informações, o scanf permite receber dados digitados pelo usuário e armazená-los em variáveis.
A estrutura básica é:
scanf("formato", &variavel);Por exemplo:
#include <stdio.h>
int main() { int idade; float altura;
printf("Digite sua idade: "); scanf("%d", &idade);
printf("Digite sua altura: "); scanf("%f", &altura);
printf("Idade: %d\n", idade); printf("Altura: %.2f\n", altura);
return 0;}Para variáveis como int, float e char, o & indica ao scanf o endereço de memória onde o valor deve ser armazenado.
Por exemplo:
scanf("%d", &idade);No caso de strings armazenadas em arrays de char, como char nome[20], não é necessário utilizar &:
scanf("%s", nome);Ao utilizar %c depois de outra leitura com scanf, é comum colocar um espaço antes do especificador:
scanf(" %c", &opcao);Esse espaço faz com que o scanf ignore caracteres de espaço em branco pendentes, como o Enter (\n), antes de ler o caractere.
Por isso:
scanf("%c", &opcao);pode acabar lendo o \n deixado por uma leitura anterior.
Já:
scanf(" %c", &opcao);ignora esses espaços em branco e aguarda um caractere válido.
O %s do scanf lê uma sequência de caracteres até encontrar um espaço em branco.
Por exemplo, se for digitado:
João da Silvacom:
scanf("%s", nome);apenas João será armazenado.
Para leituras de textos que podem conter espaços, existem outras funções, como fgets, que é mais adequada para esse caso.
Depois de entender printf e scanf, um exercício simples é criar um programa que receba os dados de um aluno e depois exiba as informações:
#include <stdio.h>
int main() { int idade, matricula; float altura; char nome[50];
printf("Digite sua idade: "); scanf("%d", &idade);
printf("Digite sua altura: "); scanf("%f", &altura);
printf("Digite seu nome: "); scanf("%s", nome);
printf("Digite sua matricula: "); scanf("%d", &matricula);
printf("\nNome: %s - Matricula: %d\n", nome, matricula); printf("Idade: %d - Altura: %.2f\n", idade, altura);
return 0;}O printf é utilizado para exibir informações, enquanto scanf é utilizado para receber dados do usuário. Para trabalhar com essas funções, é importante conhecer os especificadores de formato, como %d, %f, %c e %s, além de entender quando utilizar o operador &.
Essas duas funções são fundamentais para começar a criar programas que realmente interagem com o usuário.