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 %%.
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
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
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!
23 de outubro de 2014 às 03:27
Anônimo disse...
Desativem o avast meus amigos, eles só serve pra ocupar RAM mesmo :D
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.
Quanto aos avisos sonoros, não sei por qual motivo, mais os avisos só foram emitidos apos fechar a tela do prompt do programa.
11 de abril de 2015 às 03:48
Arthur disse...
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?
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:
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 ?
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.
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.
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?
não consegui exibir o "é", mesmo usando o /, ao invés disso aparece Ú e a barra some.
15 de outubro de 2022 às 12:16
Você aprendeu no artigo passado como criar seu primeiro programa na fantástica linguagem de programação C: um aplicativo que exibia uma mensagem na tela.
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
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.
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;
}
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.
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.
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;
}
postado por Programação Progressiva às 13:42 em 20 de nov. de 2012
39 Comentários
Fechar esta janela Ir para formulário de comentárioSou iniciante, em programação C , e estou muito feliz.
15 de julho de 2013 às 19:39
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.
25 de julho de 2013 às 12:50
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?
24 de agosto de 2013 às 19:05
Renato você esqueceu de inserir a biblioteca no include #include
25 de agosto de 2013 às 18:48
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.
26 de agosto de 2013 às 08:42
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
6 de outubro de 2013 às 05:22
Excelente comentário Samuel, com certeza ajudará outros leitores.
Quem quiser agregar, sintam-se à vontade, estamos aqui para compartilhar conhecimento mesmo.
6 de outubro de 2013 às 09:03
Este comentário foi removido pelo autor.
14 de outubro de 2013 às 14:32
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.
14 de outubro de 2013 às 14:33
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.
14 de outubro de 2013 às 19:59
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
14 de outubro de 2013 às 20:19
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?
7 de dezembro de 2013 às 09:03
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;
}
19 de fevereiro de 2014 às 18:58
Excelente material, sou super iniciante e não entendia nada em outras apostilas, está de parabens.
25 de fevereiro de 2014 às 13:38
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.
4 de março de 2014 às 05:13
Nao sou novo nem expert na linguagem C. Mas gosto muito de programar, adorei esse site, vai me ajudar bastante...
10 de março de 2014 às 18:46
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 ???
28 de março de 2014 às 10:03
No meu programa não aparece a telinha preta, desde a primeira prgramação.
26 de junho de 2014 às 19:08
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
6 de julho de 2014 às 13:47
todos estão esquecendo o #include
17 de julho de 2014 às 19:22
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!
23 de outubro de 2014 às 03:27
Desativem o avast meus amigos, eles só serve pra ocupar RAM mesmo :D
9 de dezembro de 2014 às 19:46
Obrigada. Estou amando isso!
Tudo saindo conforme ensinado.
Beijos.
14 de janeiro de 2015 às 11:53
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.
8 de abril de 2015 às 15:08
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.
11 de abril de 2015 às 03:48
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?
17 de agosto de 2015 às 06:05
Vou testa
29 de setembro de 2015 às 07:53
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 ?
30 de setembro de 2015 às 16:39
Boa sou novo no assunto, quero mostrar primeiro o valor armazenado e depois o texto como fz?
29 de outubro de 2015 às 12:02
Muito bom!
15 de março de 2016 às 03:35
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.
21 de maio de 2016 às 06:02
Não estou conseguindo fazer nada.........
14 de julho de 2016 às 14:50
Vlw me ajudou bastante 🙂!!!
30 de maio de 2017 às 20:04
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.
8 de setembro de 2018 às 20:52
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?
15 de setembro de 2018 às 09:29
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?
24 de março de 2019 às 09:21
Minha dúvida era mesmo essa
22 de maio de 2021 às 05:23
Esse tutorial me ajudou demais
15 de abril de 2022 às 08:13
não consegui exibir o "é", mesmo usando o /, ao invés disso aparece Ú e a barra some.
15 de outubro de 2022 às 12:16