Pular para o conteúdo
Ana Malagoli

Entrada e saída de dados em C

Entendendo printf e scanf

C 2 min de leitura

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 dados
  • scanf → 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 Silva

com:

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.