Arquivo

Artigos com Etiquetas ‘linguagem C’

Conhecendo a função printf

Achei aqui nos textos perdidos pelos diretórios da minha partição ~/ encontrei esse texto bastante interessante sobre a função printf, corrigi os erros de português e estou postando ele.


###################################################
### Detalhando a função printf ###
###################################################

feito por Blood_Sucker!

OBS: Este texto eh destinado a comunidade newbie do planeta, portanto, se você se acha elite, não vera nada de bom aqui.

============
Sumario |
============

1. Introdução
2. Compreendendo o printf
3. Caracteres de escape definidos por C
4. Quebrando uma string de caracteres em duas linhas
5. Determinando o numero de caracteres que printf imprimiu
6. Exibindo valores do tipo INT usando printf
6.1. Imprimindo valores inteiros formatados
6.1.1. Deslocando a impressão para a direita
6.1.2. Precedendo de zeros um deslocamento
6.2. Imprimindo um valor inteiro Octal ou Hexadecimal
6.3. Imprimindo um prefixo antes dos valores Octais ou Hexadecimais
6.4. Imprimindo valores do tipo unsigned int usando printf
6.5. Imprimindo valores do tipo long int usando printf
7. Imprimindo valores do tipo float usando printf
7.1. Imprimindo valores do tipo float em formato exponencial
7.2. Imprimindo valores do tipo float de outras maneiras
7.3. Imprimindo valores float formatados
8. Imprimindo valores do tipo char usando printf
9. Imprimindo uma string de caracteres usando printf
9.1. Imprimindo uma string do tipo Near e Far
10. Imprimindo um endereço de um ponteiro usando printf
11. Imprimindo algo precedido de uma sinal de adição ou de subtração
12. ANSI
12.1. Usando o controlador ANSI para limpar a sua tela(clear)
12.2. Usando o controlador ANSI para exibir as cores da tela
12.3. Usando o controlador ANSI para posicionar o cursor
13. Considerações Finais

1. Introdução
=============

Bem amigos, eu estive lendo algumas coisas sobre C mas que nunca havia encontrado na net, e me empolguei a escrever detalhadamente sobre a função printf da linguagem C de programação, q apesar de ser uma simples função para impressão na tela contem vários macetes para se usa-la, ganhando assim tempo, espaço em código é claro, enxugando seu código ainda mais você terá um processamento mais rápido e tal…Apesar disso tudo, este texto não passa de um guia básico sobre esta função, para o compreendimento do mesmo, basta um conhecimento bem básico de C e ter noções sobre tipos de dados decimais, hexadecimais, binários e octais. Mas nada tão difícil. É um texto beeeem idiota, mas pode ser útil tanto pra quem esta começando, quanto para quem já sabe, porque apesar de simples, tem um monte detalhezinhos que eu nunca encontrei na net =]
E no final eu ensino a manipular ANSI para cores e tals…Vários amigos meu não sabiam q dava pra fazer isso. E como o nash diz, somos todos newbies, temos muito a aprender. Você pode estar pensando q eu sou um imbecil que só quer escrever um textinho ridículo desses pra sair falando “ohh, eu escrevi pra unsekurity”. Se você pensa isso cara, tudo bem, eu pensaria o mesmo. Mas não tem nada haver. Eu contribuo com o q posso.

Ler mais…

Problemas com scanf+strings? Aqui a solução

Algumas pessoas tem problema com o uso de scanf, principalmente no uso de espaços nas strings, para resolver isso tem um macete muito simples. Digamos o código abaixo:

#include<stdio.h>
int main()
{
char frase[50];
printf("Digite a uma frase: ");
scanf("%s",frase);
printf("A frase digitada foi: %s\n");
return 0;
}

Compile: gcc frase.c -o frase

Resultado:

bash-3.1$ frase
Digite a uma frase: joao caiu feio
A frase digitada foi: joao
bash-3.1$

Para resolve esse problema do scanf não capturando o resto da frase usando o parâmetro %[^\n] ao invés de %s, por exemplo:

#include<stdio.h>
int main()
{
char frase[50];
printf("Digite a uma frase: ");
scanf("%[^\n]",frase);
printf("A frase digitada foi: %s\n");
return 0;
}

Compile: gcc frase2.c -o frase2

Resultado:
bash-3.1$ ex6
Digite a uma frase: joao caiu feio
A frase digitada foi: joao caiu feio
bash-3.1$

Agora a frase foi devidamente capturando, para evitarmos overflows no uso desse parâmetro no scanf, colocando %limite[^\n], sendo limite igual ao valor máximo de caracteres que a função scanf ira armazenar na variável. Ficando desta forma.

#include<stdio.h>
int main()
{
char frase[50];
printf("Digite a uma frase: ");
scanf("%49[^\n]",frase);
printf("A frase digitada foi: %s\n");
return 0;
}

Para limpar o buffer após o uso de scanf com este parâmetro, usamos getchar() após o scanf.

#include<stdio.h>
int main()
{
char frase[50];
printf("Digite a uma frase: ");
scanf("%49[^\n]",frase);
getchar();
printf("A frase digitada foi: %s\n");
return 0;
}

Espero que a dica sirva para poderem resolver seus problemas o uso de scanf e strings. Bons estudos a todos. Nas referências tem um link com um tabela informando uma serie de parâmetros interessantes para o uso de scanf, no segundo link tem uma artigo do com diversas dicas para printf e scanf a dupla dinâmica.

Referência:

Como usar o scanf() para strings com espaços
Parâmetros interessantes do scanf e do printf em C

Categories: Programação Tags: , ,

A Tabela ASCII

20, Fevereiro, 2010 VonNaturAustreVe Nenhum comentário

As tabelas mostradas neste apêndice representam os 256 códigos usados nos computadores da família IBM. Esta tabela refere-se ao American Standard Code for Information Interchange (código padrão americano para troca de informações), que é um conjunto de números representando caracteres ou instruções de controle usados para troca de informações entre computadores entre si, entre periféricos (teclado, monitor, impressora) e outros dispositivos. Estes códigos tem tamanho de 1 byte com valores de 00h a FFh (0 a 255 decimal). Podemos dividir estes códigos em três conjuntos: controle, padrão e estendido.

Os primeiros 32 códigos de 00h até 1Fh (0 a 31 decimal), formam o conjunto de controle ASCII. Estes códigos são usados para controlar dispositivos, por exemplo uma impressora ou o monitor de vídeo. O código 0Ch (form feed) recebido por ima impressora gera um avanço de uma página. O código 0Dh (carriage return) é enviado pelo teclado quando a tecla ENTER é pressionada. Embora exista um padrão, alguns poucos dispositivos tratam diferentemente estes códigos e é necessário consultar o manual para saber exatamente como o equipamento lida com o código. Em alguns casos o código também pode representar um caracter imprimível. Por exemplo o código 01h representa o caracter J (happy face).

Os 96 códigos seguintes de 20h a 7Fh (32 a 127 decimal) formam o conjunto padrão ASCII. Todos os computadores lidam da mesma forma com estes códigos. Eles representam os caracteres usados na manipulação de textos: códigos-fonte, documentos, mensagens de correio eletrônico, etc. São constituídos das letras do alfabeto latino (minúsculo e maiúsculo) e alguns símbolos usuais. Os restantes 128 códigos de 80h até FFh (128 a 255 decimal) formam o conjunto estendido ASCII. Estes códigos também representam caracteres imprimíveis porem cada fabricante decide como e quais símbolos usar. Nesta parte do código estão definidas os caracteres especiais: é, ç, ã, ü …

Download da Tabela ASCII

Exemplo em C para gerar a tabela ASCII:

# include <stdio.h>
int main()
{
int a;
printf("Gerando Tabela ASCII, posi%coes de 32 a 126\n\n",135);
a = 32;
do{
printf("N%c %d: Caracter %c\n\n",248,a,a);
a++;
}while(a<=126);
return 0;
}

Salve com o nome “gerador_ascii.c” e compile com o gcc:
$ gcc gerador_ascii.c -o gerador_ascii
E execute:
$ ./gerador_ascii

Para salva a tabela gerada em um arquivo:
$ ./gerador_ascii >> ~/tabela_ascii.txt
A tabela será salva em um arquivo com o nome “tabela_ascii.txt” dentro de sua home(~).

[]’s

Código simples em C que converte hora em minutos e segundos.

Código simples em C, que lê horas, minutos e segundos e escrever no ecrã o tempo correspondente em segundos.

#include<stdio.h>
int main(int argc, char** argv)
{
int hora,minuto,segundo,total;
printf("Digite o numero de horas:\n");
scanf("%d",&hora);
printf("Digite os minutos:\n");
scanf("%d",&minuto);
printf("Digite o numero de segundos:\n");
scanf("%d",&segundo);
total=(hora*3600)+(minuto*60)+segundo;
printf("O total de segundos e: %d\n",total);
return 0;
}

Para compilar basta executar:

$gcc horaconv.c -o horaconv

[]’s

Categories: Programação Tags: , , ,

Zhockon

Banner do projeto Zhockon.

Zhockon

Que diabos e esse tal de zhockon?

O Zhockon ajuda e ajudará mais (num futuro próximo) no desenvolvimento de games multi-plataforma. Resumindo, tu desenvolverá uma vez teu game e ele rodará nos mais diversos sistemas operacionais, seja ele Linux, Mac, Windows ou outros. Este será o principal compromisso durante o desenvolvimento do projeto. Ele também ajudará, a longo prazo, a reunir projetos de games (como o DJL, o instalador Ubuntu Games – IUG, o pygame, o Entropia Engine ++ e outros) num só ponto, fortalecendo a programação da plataforma num todo.

Gostei mas como é o projeto?

A plataforma Zhockon chegou! Ela necessita da ajuda de muitos para se tornar um grande software para o desenvolvimento de games nas mais diferentes plataformas existentes (GNU/Linux, FreeBSD, Windows, Haiku e outros). Vale salientar aqui que o trabalho ainda não está pronto, está apenas começando. Portanto, quem desenvolve em Python, C ou C++, pode ajudar no desenvolvimento do Zhockon. Quem sabe traduzir, desenhar ou até mesmo construir propagandas também está convidado a ajudar este projeto. Quem tiver projetos similares ao qual estou desenvolvendo aqui, entre em contato comigo pelo e-mail williamx64@gmail.com. Pode ser que tenhamos o mesmo objetivo, quem sabe, não é? Quem quiser ajudar o projeto, basta enviar tua contribuição para zhockon.platform@gmail.com com uma identificação, ou cadastrar-se no SF.net e mandar um username. Ela será avaliada e provavelmente utilizada, o que acarretará na adição do nome do contribuidor nos créditos da plataforma, no software e/ou no SourceForge.

Pagina Oficial do Projeto
Anatomia do Zhockon
Canal de Desenvolvimento do Zhockon
Download de Pacotes da Plataforma
Do que o projeto Zhockon é feito?
Fórum Oficial do Projeto
Plataforma Zhockon no Futuro
Siga o desenvolvimento da plataforma no Twitter
Zhockon para Mentes Criativas
Zhockon para Todos

[]’s

SEO Powered by Platinum SEO from Techblissonline