Pra isso, você usou a função printf. Porém, essa função é cheia de recursos, e vamos ensinar mais alguns agora.
Vamos mostrar uma porção de códigos, mas não vamos mostrar o resultado. Para você aprender a programar nunca fique copiando e colando, vá lá e digite os códigos.
Só assim você aprenderá.
Baixe nossa Apostila de C
Caracteres Especiais
Você viu que para exibirmos uma mensagem, basta escrever o texto entre aspas duplas "".
Porém, como vamos ver nesse tutorial de C, não bastante somente escrever as coisas entre aspas duplas, e que tudo vai sair exatamente como você planejou.
Porém, como vamos ver nesse tutorial de C, não bastante somente escrever as coisas entre aspas duplas, e que tudo vai sair exatamente como você planejou.
Teste, por exemplo, exibir uma mensagem com os seguintes caractere: " ou \
O código ficaria assim:
#include <stdio.h> int main(void) { printf("Aspas duplas "\n"); printf("Barra: \"); return 0; }Como explicamos antes, o que aparece no console (telinha preta) é o que está entre aspas: " isso aqui aparece".
Se você colocar aspas duplas você terá aspas duplas, o C vai interpretar que é pra ser exibido o que estiver entre a primeira e a segunda aspas, que nosso caso é o texto "Aspas duplas :". E a terceira aspas?
A terceira não era pra estar lá, o \n é um erro, por isso gera um erro na hora de compilar.
Porque o nosso conceito de caracteres é diferente do conceito que os computadores tem.
Para nós, o caractere " é aspas duplas. Para o C, é um caractere que delimita o que vai aparecer no console.
Ou seja, pro C, esses caracteres não fazem parte do alfabeto, não estão lá por motivos de leitura para humanos, são símbolos que representam outras coisas.
Então, como exibir esses caracteres especiais na forma de texto?
Usando o caractere de \
Quando queremos que o caractere de aspas duplas apareça no console, colocamos o \ antes: \"
O C vai interpretar que, com esse símbolo \ antes, o caractere " deve ser exibido na tela.
Sim, vai ficar: \\
Quando o C encontra essas duas barras, ele entende que deve se exibir o caractere \
Nosso programa fica assim:
Em suma, o que esse caractere faz é 'avisar' ao C que o próximo caractere, que vem logo após o \ terá um significado diferente.Por que o C não exibe esses caracteres?
Para nós, o caractere " é aspas duplas. Para o C, é um caractere que delimita o que vai aparecer no console.
Ou seja, pro C, esses caracteres não fazem parte do alfabeto, não estão lá por motivos de leitura para humanos, são símbolos que representam outras coisas.
Então, como exibir esses caracteres especiais na forma de texto?
Usando o caractere de \
Quando queremos que o caractere de aspas duplas apareça no console, colocamos o \ antes: \"
O C vai interpretar que, com esse símbolo \ antes, o caractere " deve ser exibido na tela.
Como exibir o caractere \
Coloque uma barra antes dele também.Sim, vai ficar: \\
Quando o C encontra essas duas barras, ele entende que deve se exibir o caractere \
Nosso programa fica assim:
#include <stdio.h> int main(void) { printf("Aspas duplas \" \n"); printf("Barra: \\"); return 0; }
Note que já usamos isso antes, para imprimir uma quebra de linha: \n
Você sabe que ao escrever \n o C não irá imprimir a barra nem o n, ele vai imprimir uma quebra de linha, ou um 'Enter'.
Sinais sonoros e outros caracteres especiais
Carriage return: \r
Esse caractere especial faz com que o cursor se mova para o início da linha:
#include <stdio.h> int main(void) { printf("Carriage return: \r"); getchar(); return 0; }
O comando getchar() faz com que o programa espere que o usuário digite alguma tecla.
Assim o programa só termina se você digitar algo. Usamos isso para motrar que o carriage return faz com o cursor vá para o início da linha.
Assim o programa só termina se você digitar algo. Usamos isso para motrar que o carriage return faz com o cursor vá para o início da linha.
Tabulação horizontal (TAB): \t
#include <stdio.h> int main(void) { printf("Antes do \\t \t Depois do \\t"); return 0; }
Sons: \7 e \a
Os leitores mais antigos, que jogaram video-games como o NES ou Atari certamente vão se lembrar desse aviso sonoro, que também era utilizado em sistemas operacionais antigos e jogos de computador feitos no terminal:
#include <stdio.h> int main(void) { printf("\7 \a"); return 0; }
39 comentários:
Sou iniciante, em programação C , e estou muito feliz.
Só para complementar, pois tive essa dúvida aqui.
Na hora de imprimir os caracteres especiais não consegui imprimir o % com a barra invertida \%.
Para isso utilizei o seguinte %%.
Abraços.
nao aconteceu nada qndo eu executei esses 2 codigos no CODE BLOCK:
#include
int main(void)
{
printf("\7 \a");
return 0;
}//era pra emitir aviso sonoro?
e este:
#include
int main(void)
{
printf("Antes do \\t t Depois do \\t");
return 0;
}// era pra ter efeito de tabulação?
Renato você esqueceu de inserir a biblioteca no include #include
Quando se tenta colocar qualquer biblioteca: algo . h
O comentário é cortado.
Quem quiser conversar mais em detalhes, discutir e tirar dúvidas, recomendamos usar o nosso fórum.
Mto bom o site e tudo mais, mais pra quem nao entendeu o conceito de \ é o seguinte: alguns caracteres foram mapeados para serem caracteres especiais, fazer algo, não serem imprimidos na tela como o caso das " elas são feitas para terminar a string mas se você quiser imprimi-las você tem de mandar o C Ignorar a função que ela faz, com a barra invertida \ você mata a função das aspas e a faz em caractere comum ". Isso também vale para a própria barra, \\ Imprime uma barra invertida. e isso também tem valor invertido voce pode colocar a barra antes de caractere normal e dar a ele uma função especial como por exemplo o n O N é N uma letra mas se ele vim antes da barra ele pula uma linha \n assim como o T faz uma tabulação em vez de ser a T letra se vir antes da barra \t
Excelente comentário Samuel, com certeza ajudará outros leitores.
Quem quiser agregar, sintam-se à vontade, estamos aqui para compartilhar conhecimento mesmo.
Comigo também não funcionou o aviso sonoro dos comandos "\7 \a".
Estou usando o Codeblocks 12.11, com GCC, no Ubuntu 13.04.
Muito bom este site. Estou no primeiro semestre de SI e recomendei o site a todos os alunos da sala. Muito bem elaborado e explicativo. Show.
Danielle,
Esse Beep sai dos speakers internos dos computadores, era aquele barulho que fazia quando iniciávamos um PC Desktop.
No meu notebook realmente não saiu o beep, outras pessoas relatam o mesmo.
Você pode testar a função Beep():
#include
#include
#if !(WIN32)
#define Beep(x,y) ( putchar('\a') )
#endif
int main()
{
Beep(523,500);
return 0;
}
http://www.linuxforums.org/forum/programming-scripting/73363-beep-problem.html
Na hora de "buildar" e rodar o programa (f9) aparece a seguinte mensagem dizendo que o arquivo .exe não foi criado:
"It seems that this file has not been built yet.
Do you want to build it now?"
eu clico sim e nada a contece... come eu resolvo isso?
Estou a começar hoje e estou a amar :) - já era uma paixão antiga!
A título de curiosidade fui acrescentando instruções sem apagar o que tinha feito antes e o antivirus (avast) acusa malware quando:
#include
int main (void)
{
printf("%% \7 \7 \7 \a \a \a");
getchar();
return 0;
}
Excelente material, sou super iniciante e não entendia nada em outras apostilas, está de parabens.
Não li todos os comentarios, mas se o som não está sendo executado é pq o pc pode estar sem o dispositivo. em alguns pc`s meus eu retirava.
Nao sou novo nem expert na linguagem C. Mas gosto muito de programar, adorei esse site, vai me ajudar bastante...
Estou adorando o curso. Comecei hoje.
Uma dúvida:
no código aviso sonoro, eu tentei assim e funcionou:
# include
int main (void)
{
printf ("\7 ");
return 0;
}
Então qual a função do \a ???
No meu programa não aparece a telinha preta, desde a primeira prgramação.
Olá também comecei hoje e estou gostando muito do curso, desta oportunidade de aprendizado parabéns!
o meu executa assim porém sem o som, mas deve ser como você explicou mais acima
(linha em branco)
Process returned 0 (0x0) execution time : 0.011 s
Press ENTER to continue.
então creio que tudo correndo liso, estou usando o GNU/Linux Ubuntu 14.04 lts com o codeblocks versão 13.12
todos estão esquecendo o #include
Brothers muito obrigado pelo trabalho bem feito! Estou usando muito os tutoriais de vcs desde que comecei a programar, o que não consigo aprender na facul de sistemas e no técnico de informática aprendo aqui com vcs! Vcs são D+ :)
Muito obrigado mesmo!
Até agora tudo rodando perfeito aqui!
Desativem o avast meus amigos, eles só serve pra ocupar RAM mesmo :D
Obrigada. Estou amando isso!
Tudo saindo conforme ensinado.
Beijos.
Pessoal, quem não conseguiu executar o "beep sonoro" é problema de hardware, ou seja, o autofalante inserido na placa mãe está ausente. Invertam a polaridade caso encontre-o na placa mãe, caso não funcione teste-o com uma bateria de 9v para ter certeza que não está queimado. Depois baixem o manual da placa mãe e identifiquem os terminais positivo e negativo "speaker".
Estou estudando a linguagem C para futuramente ingressar em integração de sistemas e processos automatizados.
Excelente! Parabéns aos idealizadores do projeto.
Quanto aos avisos sonoros, não sei por qual motivo, mais os avisos só foram emitidos apos fechar a tela do prompt do programa.
eu digitei o comado
#include
int main(void)
{
printf("Antes do \\t \t Depois do \\t");
return 0;
}
ele inicio mais não aconteceu nada só apareceu o console com a palavra escrita e mais nada que q houve?
e também digitei
#include
int main(void)
{
printf("Carriage return: \r");
getchar();
return 0;
}
porem a unica coisa que aconteceu foi que eu podia escrever algo no console e dar enter, mas eu também podia dar enter sem digitar nada que que houve?
Vou testa
Olá equipe do C progressivo! Eu serei um futuro Cientista da Computação e estou a adiantar alguma coisa da grade.
Gostaria de parabenizar o projeto que é, com certeza, o melhor do gênero dentre todas as páginas da Web em português. Estou realmente maravilhado com tudo, principalmente a forma como tudo é exposto e passado de forma coloquial e direta! Mal consigo guarda minha excitação em avançar para as próximas aulas, mas tenho uma dúvida quanto a essa. Eu entendi tudo até agora e resolvi brincar um pouco e dessa brincadeira saiu esse código:
#include
int main(void)
{
printf("Fuck Amazing, i\'m instructing a machine!\n")
printf("\7 \7 \7");
getchar();
return 0;
}
Mas quando eu dei Build o Code::Blocks acusou um erro na linha:
printf("\7 \7 \7");
Como arrisco um inglês digamos, modesto, percebi na Build messages que o programa estava me dizendo que era esperando um ; antes de printf("\7 \7 \7");
Então eu acrescentei ; na frente da linha desta linha e dei Build com uma leve descrença e voilà! Funcionou! Nenhum erro!
A minha questão é: o que fez com que um caractere aparentemente não tão substancial desse gargalo no código todo ("todo", eu sei que não é tão grande assim rsrsrs.) ? E qual a sua função nesse e outros casos ?
Boa sou novo no assunto, quero mostrar primeiro o valor armazenado e depois o texto como fz?
Muito bom!
Criando sinais sonoros: Gostaria, se possível, que me explicasse o que produz o sinal sonoro, pois já experimentei de vários modos, ex: print("\7 \a"), conforme consta no tutorial e funcionou. Mas também funcionou com: print("\a"), com: print("\9 \a"), com: print("\1000 \a"), com: print("a\a"), ou seja, não dá para entender como funciona o código.
Não estou conseguindo fazer nada.........
Vlw me ajudou bastante 🙂!!!
Boa noite! Sou Jean Carlos da Conceição. Aluno de Ciências da Computação da Universidade do Estado da Bahia. Graduado em Pedagogia pela Faculdade Zacarias de Góes (FAZAG). Gostaria de parabenizar pelo excelente projeto de compartilhamento sobre Linguagem "C". Tenho me empenhado bastante tempo esses últimos dias. Quero que saibam que tem todo meu apoio e que os ajudarei a difundir esse trabalho lindo e espero que lucrem bastante e que tenham muito sucesso.
Com certeza curtirei o canal. Já divulguei para meus colegas e pedi que os mesmos se inscrevessem. Do que depender de mim vocês não ganharam apenas mais um inscrito e sim um companheiro.
Att. Jean Carlos da Conceição.
sobre o comando carriage return ou \r, como posso utiliza-lo para que depois meu programa absorva o que foi escrito, ou dê um "scanf" naquela informação?
Boa tarde. Estou com uma dúvida. Após o printf (digite um numero) eu não coloco nada e dou enter. Queria que aparecesse a mensagem "erro NÃO digitou nada". Mas invés disso fica esperando uma resposta. Como tratar esse Enter?
Minha dúvida era mesmo essa
Esse tutorial me ajudou demais
não consegui exibir o "é", mesmo usando o /, ao invés disso aparece Ú e a barra some.
Postar um comentário