Você está na página 1de 15

Guia

das Principais Funes de Entrada e Sada


Padro da Linguagem C
<stdio.h>

De Aluno Para Aluno

Compartilhe! Distribuio Gratuita :)


Link para download-> http://goo.gl/XsgeC

Verso 1.0

12/05/2013
ndice

1. Consideraes para um bom entendimento desse guia ........... 3

2. Vocabulrio necessrio para entender esse guia .............. 4

3. Introduo .................................................. 5

4. Funes para Acesso de Arquivos


4.1. Funo fopen ......................................... 6
4.2. Funo freopen ....................................... 6
4.3. Funo fclose ........................................ 7
4.4. Funo fflush ........................................ 7

5. Funes de Entrada e Sada No Formatadas


5.1. Funes fgetc e getc ................................. 8
5.2. Funes fputc e putc ... ............................. 8
5.3. Funo fgets ........................................ 9
5.4. Funo gets .......................................... 9
5.5. Funo puts .......-.................................. 10
5.6. Funo fputs ......................................... 10
5.7. Funo getchar ....................................... 11
5.8. Funo putchar ....................................... 11

6. Funes de Entrada e Sada Formatadas


6.1. Funo scanf ......................................... 12
6.2. Funo fscanf ........................................ 12
6.3. Funo printf ........................................ 13
6.4. Funo fprintf ....................................... 13

7. Limpeza de Buffer ........................................... 14

2
1. Consideraes para um bom entendimento desse guia

- Por mais que esse guia tenha sido escrito com um vocabulrio no
tcnico e com portugus coloquial, para uma compreenso completa
assume-se que o leitor j possua conhecimento no mnimo bsico da
Linguagem C.

- Se esse seu primeiro contato com a Linguagem C ou voc sinta


que necessrio revisar algum assunto da linguagem extremamente
recomendado checar as vdeo aulas(gratuitas) sobre C no YouTube e
fazer parte do frum de programao do De Aluno Para Aluno.

Link para as vdeo aulas -> http://goo.gl/72Cu2


Link para o frum -> http://goo.gl/CaUnq

- Por comodidade vamos considerar que:


char *c, char c[] e string; So a mesma coisa.
Tecnicamente falando algum poderia argumentar que em C no existem
strings mas sim, vetores de caracteres. E que um ponteiro char no
necessariamente um vetor de caracteres. Mas por comodidade de
explicao do contedo e bom senso podemos considerar que quando a
palavra string for utilizada estamos falando de um vetor de
caracteres e vice-versa.

- Por ltimo, voc ver que esse guia foi escrito com palavras de
diversas cores. Isso no foi uma escolha apenas por motivos
estticos mas funcional. Observe o exemplo abaixo:

int umaFuncao(float valor1, float valor2);



A funo tem valor1 e valor2 como parmetros.

Perceba que a colorao das palavras valor1 e valor2 utilizada


para referenciar as variveis na funo umaFuncao.

3
2. Vocabulrio necessrio para entender esse guia:
stream - Fluxo de dados em um sistema computacional(Wikipedia).

stream de input - Fluxo de entrada de dados.

stream de output - Fluxo de sada de dados.

buffer - Espao temporrio na memria para armazenamento de informao.

NULL - Uma constante que contm o valor de 0. Normalmente utilizado


para NO referenciar um ponteiro um endereo de memria no computador.

EOF - END OF FILE (Final do Arquivo). Informa a condio em que dados


no podem mais ser lidos de uma fonte especfica(Wikipedia).

\n - Caractere quebra-de-linha ou nova linha. Corresponde ao


caractere da tecla Enter.

\0 - Caractere nulo. Um caractere de controle com valor 0. Em C


utilizado para informar o final de uma string.

S.O - Sistema Operacional.

Padres C - C89 / C99 / C11

input padro - Refere-se a entrada padro de dados o que para ns, ser
considerado como sendo o teclado do computador.

output padro - Refere-se a sada padro de dados o que para ns, ser
considerado como sendo o console no monitor do computador.

stdin - Do ingls, Standard Input, refere-se a entrada padro de dados o


que para ns, ser considerado como sendo o teclado do computador.

stdout - Do ingls, Standard Output, refere-se a sada padro de dados o


que para ns, ser considerado como sendo o console no monitor do
computador.

4
3. Introduo

Sem mais formalidades, vamos ao que interessa! As funes que voc


ir aprender nas linhas abaixo tem como objetivo permitir a entrada ou
sada de dados.

importante notar que em C, e em muitas outras linguagens, esse


processo de input e output feito com a ajuda de um buffer(ver imagem
acima). O buffer nada mais que uma regio temporria da memria para
escritura e leitura de dados.
Se voc j utilizou a funo scanf() ou fgets() em C deve ter
notado que o programa apenas pega o que voc digitou quando voc
aperta a tecla Enter. Antes de apertar a tecla Enter os dados informados
por voc esto sendo armazenados no buffer de entrada.

Agora que voc j sabe o que ir aprender vamos dividir as funes


apresentadas nesse guia em trs categorias:

1- Funes para acesso de arquivos.


2- Funes de Input e Output no formatados.
3- Funes de Input e Output formatados.

Obs. Voc NO ir ver TODAS as funes de Entrada e Sada padro da


Linguagem C mas as que ao meu ver so essenciais. Expliquei as funes
com portugus simples e nada tcnico propositadamente! Se voc tem
alguma sugesto para melhorar esse guia entre em contato :)

5
4. Funes para Acesso de Arquivo
4.1. Funo fopen

Como definida em stdio.h?


FILE *fopen(const char *restrict filename, const char *restrict mode);

O que faz?
A funo fopen abre o arquivo cujo nome a informado pela string
filename e associa um stream ele.

Que parmetros recebe?


Recebe 2 parmetros:
filename: Uma string que informa o nome do arquivo ou diretrio +
nome do arquivo.
mode: Uma string que informa a modalidade de abertura.

obs. Para ver quais valores mode pode assumir faa o download do
arquivo Modo de Abertura fopen clicando aqui.

O que retorna?
Se sucedido retorna um ponteiro tipo FILE para o objeto controlando o
stream do arquivo. Se a operao falhar retorna NULL.

Vdeo que utiliza esta funo:


http://goo.gl/CgVAF

4.2. Funo freopen

Como definida em stdio.h?


FILE *freopen(const char *restrict filename,
const char *restrict mode, FILE *restrict stream);

O que faz?
A funo freopen abre o arquivo cujo nome informado pelo parmetro
filename e associa o stream apontado por ele stream.

Que parmetros recebe?


Recebe 3 parmetros:
filename: Uma string que informa o nome do arquivo ou diretrio +
nome do arquivo.
mode: Uma string que informa a modalidade de abertura.
stream: Um ponteiro tipo FILE.

obs. Para ver quais valores mode pode assumir faa o download do
arquivo Modo de Abertura fopen clicando aqui.

6
O que retorna?
Se sucedido retorna o stream do arquivo. Se a operao falhar retorna
NULL.

Vdeo que utiliza esta funo:


http://goo.gl/5byjP

4.3. Funo fclose

Como definida em stdio.h?


int fclose(FILE *stream);

O que faz?
Fechar o fluxo de stream. Qualquer dado "preso" no buffer de sada
descartado para o S.O. Qualquer dado preso no buffer de entrada
descartado.

Que parmetros recebe?


Recebe 1 parmetro:
stream: Um ponteiro tipo FILE.

O que retorna?
Se sucedido retorna 0. Se a operao falhar retorna EOF.

Vdeo que utiliza esta funo:


http://goo.gl/CgVAF

4.4. Funo fflush

Como definida em stdio.h?


int fflush(FILE *stream);

O que faz?
Sincroniza o stream de output com o prprio stream.

Obs. Se o argumento recebido for do tipo input a funo tem


comportamento indeterminado.

Que parmetros recebe?


Recebe 1 parmetro:
stream: Um ponteiro tipo FILE de output.

O que retorna?
Se sucedido retorna 0. Se a operao falhar retorna EOF.

7
5. Funes de Entrada e Sada No Formatadas
5.1. Funes fgetc e getc()

Como so definidas em stdio.h?


int fgetc(FILE *stream);
int getc(FILE *stream);

O que fazem?
Ambas funes obtm o prximo caractere do fluxo informado por stream.

Que parmetros recebem?


Ambas funes recebem 1 parmetro:
stream: Um ponteiro tipo FILE de input.

O que retornam?
Se sucedido retornam o caractere escrito. Se um erro ocorrer retornam
EOF. Se e a funo alcanar o final do fluxo retorna EOF.

Observao:
AS FUNES getc e fgetc so exatamente iguais mas getc tambm pode ser
implementada como um macro. Se getc for implementada como uma macro o
argumento no devem nunca ser uma varivel com efeito colateral.
No se preocupe tanto com essa particularidade, no todo dia que voc
far um programa que caiar nessa exceo. O importante ao menos saber
que em C getc pode ser uma funo ou uma macro.

Vdeo que utiliza esta funo:


http://goo.gl/QWDxy

5.2. Funes fputc e putc()

Como so definidas em stdio.h?


int fputc(int ch, FILE *stream);
int putc(int ch, FILE *stream);

O que fazem?
Ambas funes escrevem um caractere no fluxo informado por stream.

Que parmetros recebem?


Ambas funes recebem 2 parmetros:
ch: Um valor int que o valor do caractere a ser escrito.
stream: Um ponteiro tipo FILE de output.

O que retornam?
Se sucedido retornam o caractere lido. Se um erro ocorrer retornam EOF.

8
Observao:
AS FUNES putc e fputc so exatamente iguais mas putc tambm pode ser
implementada como um macro. Se putc for implementada como uma macro os
argumentos no devem nunca ser variveis com efeito colateral.
No se preocupe tanto com essa particularidade, no todo dia que voc
far um programa que caiar nessa exceo. O importante ao menos saber
que em C putc pode ser uma funo ou uma macro.

Vdeo que utiliza esta funo:


http://goo.gl/OuWMC

5.3. Funo fgets

Como definida em stdio.h?


char *fgets(char *restrict s, int n, FILE *restrict stream);

O que faz?
L uma string de stream at que a leitura encontre o caractere
\n(incluso na leitura) ou a leitura alcance EOF ou a quantidade mxima
de caracteres especificada por n-1 seja atingida.

Que parmetros recebe?


Recebe 3 parmetros:
s: Uma string para armazenar os caracteres lidos.
n: Um valor int que determina a quantidade mxima de caracteres a
serem lidos - 1.
stream: Um ponteiro tipo FILE de input.

O que retorna?
Se sucedido retorna a string lida. Se um erro ocorrer retorna NULL.

Observao:
fgets ir automaticamente incluir o caractere \0 na ltima posio da
string.

Vdeo que utiliza esta funo:


http://goo.gl/5byjP

5.4. Funo gets(No recomendvel em C99 e inexistente em C11)

Como definida em stdio.h?


char *gets(char *restrict s);

O que faz?
L uma string de stdio at que a leitura encontre o caractere \n(incluso
na leitura).

9
Que parmetros recebe?
Recebe 1 parmetro:
s: Uma string para armazenar os caracteres lidos.

O que retorna?
Se sucedido retorna a string lida. Se um erro ocorrer retorna NULL.

Observao:
No utilize essa funo! Se o seu professor insistir que a funo
segura e pode ser usada no tem motivo pra criar encrenca e receber uma
nota ruim. Mas saiba que fgets e gets_s(inclusa apenas em C11) so
funes que fazem o mesmo servio com o nvel de segurana adequado.
Assita o vdeo do link abaixo para entender porque a funo insegura.

Vdeo que utiliza esta funo:


http://goo.gl/yxFJw

5.5. Funo puts

Como definida em stdio.h?


int puts(const char *s);

O que faz?
Escreve a string s em stdout e automaticamente adiciona \n ao final da
string escrita.

Que parmetros recebe?


Recebe 1 parmetro:
s: Uma string que ser escrita em stdout.

O que retorna?
Se sucedido retorna um nmero positivo. Se um erro ocorrer retorna EOF.

Vdeo que utiliza esta funo:


http://goo.gl/Z42f5

5.6. Funo fputs

Como definida em stdio.h?


int fputs(const char *restrict s, FILE *restrict stream);

O que faz?
Escreve a string s no stream informado e automaticamente adiciona o
caractere \n ao final da string escrita.

10
Que parmetros recebe?
Recebe 2 parmetros:
s: Uma string que ser escrita no fluxo apontado por stream.
stream: Um ponteiro tipo FILE de output.

O que retorna?
Se sucedido retorna um nmero positivo. Se um erro ocorrer retorna EOF.

Vdeo que utiliza esta funo:


http://goo.gl/Z42f5
* Igual a puts exceto que te permite especificar onde escrever os dados.

5.7.Funo getchar

Como definida em stdio.h?


int getchar(void);

O que faz?
L o prximo caractere de stdin.

Que parmetros recebe?


No recebe nenhum parmetro.

O que retorna?
Se sucedido retorna o valor do caractere obtido. Se um erro ocorrer
retorna EOF.

Vdeo que utiliza esta funo:


http://goo.gl/C3iMQ

5.8. Funo putchar

Como definida em stdio.h?


int putchar(int ch);

O que faz?
Escreve o valor do caractere ch em stdout.

Que parmetros recebe?


Recebe 1 parmetro:
ch: Um valor int correspondente ao caractere que ser escrito em
stdout.

O que retorna?
Se sucedido retorna o valor do caractere escrito. Se um erro ocorrer
retorna EOF.

Vdeo que utiliza esta funo:


http://goo.gl/C3iMQ
11
6. Funes de Entrada e Sada Formatadas
6.1. Funo scanf

Como definida em stdio.h?


int scanf(const char * restrict format, ...);

O que faz?
L dados de stdout, sob o controle da string apontada por format que
informa a ordem e o modo como os dados so convertidos para dentro do
programa.

Que parmetros recebe?


Recebe 2 parmetros:
format: Uma string que pode ou no conter um ou mais
Especificadores de Converso de Entrada.
...: Reticncias. Informa que a funo recebe uma quantidade
varivel de parmetros. Nesta funo em especfico voc deve
informar os endereos de memria de variveis que correspondam aos
Especificadores de Converso de Entrada.

obs. Para ver quais Especificadores de Converso de Input format


pode receber faa o download do a r q u i v o E s p e c i f i c a d o r e s d e
Converso de Entrada clicando aqui.

O que retorna?
O nmero de argumentos que foram corretamente relacionados um
Especificador de Converso de Entrada.

6.2. Funo fscanf

Como definida em stdio.h?


int fscanf(FILE *restrict stream, const char *restrict format, ...);

O que faz?
L dados de um stream apontado por stream, sob o controle da string
apontada por format que informa a ordem e o modo como os dados so
convertidos para dentro do programa.

Que parmetros recebe?


Recebe 3 parmetros:
stream: Um ponteiro tipo FILE de input.
format: Uma string que pode ou no conter um ou mais
Especificadores de Converso de Entrada.
...: Reticncias. Informa que a funo recebe uma quantidade
varivel de parmetros. Nesta funo em especfico voc deve
informar os endereos de memria de variveis que correspondam aos
Especificadores de Converso de Entrada.

12
obs. Para ver quais Especificadores de Converso de Entrada
format pode receber faa o download do arquivo Especificadores
de Converso de Entrada clicando aqui.

O que retorna?
O nmero de argumentos que foram corretamente relacionados um
Especificador de Converso de Entrada.

6.3. Funo printf

Como definida em stdio.h?


int fprintf(const char *restrict format, ...);

O que faz?
Escreve uma string em stdout que pode ou no conter um ou mais
parmetros recebidos por ... convertidos em caracteres de string

Que parmetros recebe?


Recebe 2 parmetros:
format: Uma string que pode ou no conter um ou mais
Especificadores de Converso de Sada.
...: Reticncias. Informa que a funo recebe uma quantidade
varivel de parmetros. Nesta funo em especfico voc deve
informar os nomes variveis ou valores literais que correspondam
aos Especificadores de Converso de Sada.

obs. Para ver quais Especificadores de Converso de Output



pode format pode receber faa o download do a r q u i v o
Especificadores de Converso de Sada clicando aqui.

O que retorna?
Um valor int que corresponde ao nmero de caracteres que foram
corretamente escritos em stdout.

6.4. Funo fprintf

Como definida em stdio.h?


int fprintf(FILE *restrict stream, const char *restrict format, ...);

O que faz?
Escreve uma string em stream que pode ou no conter um ou mais
parmetros recebidos por ... convertidos em caracteres de string

13
Que parmetros recebe?
Recebe 3 parmetros:
stream: Um ponteiro tipo FILE de output.
format: Uma string que pode ou no conter um ou mais
Especificadores de Converso de Sada.
...: Reticncias. Informa que a funo recebe uma quantidade
varivel de parmetros. Nesta funo em especfico voc deve
informar os nomes variveis ou valores literais que correspondam
aos Especificadores de Converso de Sada.

obs. Para ver quais Especificadores de Converso de Output



pode format pode receber faa o download do a r q u i v o
Especificadores de Converso de Sada clicando aqui.

O que retorna?
Um valor int que corresponde ao nmero de caracteres que foram
corretamente escritos em stream.

7. Limpeza de Buffer
Para finalizar te deixo o link para o vdeo Limpeza de Buffer. Esse
um problema muito comum quando utilizamos as funes apresentadas por
esse guia.
No vdeo voc ir aprender o que um buffer sujo e possveis solues
para o problema.

Vdeo:
http://goo.gl/k8oGL

14
FIM

Espere s mais um minuto!

Para obter a verso mais recente desse guia basta acessar o link
http://goo.gl/XsgeC e verificar se a verso que voc possui corresponde
a verso disponvel no site(a verso do guia est escrita na primeira
pgina no canto inferior direito).

Eu toro para que esse guia tenha sido til e esclarecido qualquer
dvida referente as funes de input e output padro de C. No
entanto se voc ainda tem dvidas cheque nosso frum de perguntas
clicando nesse link-> http://goo.gl/CaUnq

O canal De Aluno Para Aluno tambm possui vdeo aulas de outros


assuntos e outras linguagens de programao. A melhor maneira de
acompanhar as vdeo aulas e inscrevendo-se no canal clicando nesse
link -> http://goo.gl/olNWt

Se voc acha que esse guia pode ser til para outras pessoas eu
peo que voc o compartilhe. Essa uma tima maneira de retribuir
o empenho colocado em criar materiais 100% gratuitos desse tipo.
Para compartilhar esse guia apenas envie o link abaixo para seus
amigos -> http://goo.gl/XsgeC

Se voc possui um blog, site, canal no YouTube ou qualquer meio de


divulgao e gostaria de utilizar partes ou todo o contedo escrito
nessa guia fique a vontade mas por favor no deixe de adicionar os
crditos.

E por ltimo, voc pode se conectar com o De Aluno Para Aluno de


vrias maneiras:

www.facebook.com/DeAlunoParaAluno

http://goo.gl/8jlJZ

www.twitter.com/AlunoParaAluno

http://goo.gl/rUJzN

Ajude o Canal -> http://goo.gl/fiYBa

15

Você também pode gostar