You are on page 1of 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

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.

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.

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 :)

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.

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.

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.

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).

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

You might also like