1 – 6 de 6
Anônimo iKillerx disse...

Eu executo o primeiro código normal, mas quando digito algo e dou enter o programa para de funcionar.


Se troco:

gets(nome);

por:

scanf("%c", &nome);

funciona em partes, mas quando vai exibir o valor da variável 'nome' na tela o programa fecha, ai tenho que trocar o '%s' por '%c' no printf...


Porque isso acontece??? se estou usando uma string não deveria que apontar com o '&' no scanf e poder usar o '%s' no lugar de '%c', mas se coloco o programa fecha.

13 de setembro de 2013 às 18:20

Anônimo Apostila de C disse...

Olá iKillerx,

Demos uma alterada no código, pra evitar que ocorra qualquer tipo de erro.

Lembrando que usamos %c para pegar somente um caractere.

Para pegar strings, usamos %s (na scanf), e não usamos &.

Pra saber, em detalhes, o motivo disso, você pode dar uma lida em nossa seção de Strings.

E isso de gets(), scanf() é um pouco complicadinho mesmo, há todo um rigor por trás, mas você pode entender bem isso nesse artigo de nossa apostila:
Como ler e escrever Strings em C

Qualquer dúvida, não deixe de perguntar.

14 de setembro de 2013 às 11:09

Anônimo iKillerx disse...

Obrigado, agora funcionou!!!(estou em outro dispositivo mas em breve testo no outro)...

Mas o que isso: "[^\n]" faz?? Penso que e para aceitar caracteres ate achar um '\n'. Mas de padrão essa função já não faz isso??


E uma correção. Aqui:

printf("Ja a variavel 'nome' eh uma String e armazena "%s"\n", nome);

Tem de tiras as aspas ao redor do %s ... Ficando assim:

printf("Ja a variavel 'nome' eh uma String e armazena %s \n", nome);


Mas fora essas duvidas eu estou gostando muito dessa apostila/site. Melhor que eu ja vi. Estou estudando C pra um projeto escolar com Arduino e aqui estou aprendendo o basico da linguagem, pra depois me aprofundar em funções especificas. Em breve estudarei java.... E queria sugerir que criassem apostilas de desenvolvimento movel, web e software graficos.

15 de setembro de 2013 às 13:07

Anônimo Apostila C Progressivo disse...

Olá iKillerx,

Se você usar a função scanf() pra pegar uma string, ela vai pegar tudo até o primeiro espaço. Tipo, se você digitar seu nome completo, ela só armazena o primeiro nome, pois para de armazenar quando você digita um espaço.

Esse é o padrão da função.

Ao colocar [^\n] estamos mudando o comportamento dela, pra ela parar somente quando você digitar enter (\n). Você pode ter mais informações sobre isso no link que te passei.

Obrigado por mostrar o erro. Na verdade colocamos \" para aparecer as aspas no printf(), mas na hora de formatar, botar as cores e tal pra publicar aqui no site, saiu sem as barras.

Agradecemos também a sugestão que nos enviou. Temos um site, com pouco conteúdo, sobre Eletrônica de um modo geral, onde já falamos sobre o 8086, e planejamos fazer algo com PIC e Arduíno.

Abraços e bom estudo.

15 de setembro de 2013 às 20:00

Anônimo Anônimo disse...

Apenas uma observação: quando vc diz "Quando formos usar o typedef com estruturas, não podemos declarar variáveis após o ponto-e-vírgula", não serias ANTES do ponto e virgula?
E vou aproveitar tambem para agradecer pelo curso que voce disponibilizou de graça para todos, aprendi muito com ele, voces ensinam muito bem, vlw :)

21 de abril de 2014 às 16:22

Anônimo Anônimo disse...

A página é incrível, e a iniciativa de compartilhar tudo isso é única - o maior site brasileiro de ensino de Linguagem C.

Quanto ao typedef, francamente, sou professor e, para iniciantes, minha opinião é de que é uma grande perda de tempo. É divertido poder criar seus próprios dados, mas não vejo utilidade alguma em um comando assim para pequenos e até mesmo códigos medianos.

Obrigado novamente pelo material.

2 de setembro de 2015 às 17:55

É quase impossível criar centenas de páginas voltadas para programação C e não cometer algum erro.

- Se notar algum conceito, letra ou trecho de código errado, deixe sua correção

- Se perceber uma maneira melhor ou mais eficiente de fazer algo, deixe sua ideia

- Se algo não ficar claro ou for confuso, nos avise

Aos poucos vamos aumentando e melhorando a qualidade de nosso material, e para isso contamos com sua ajuda.
Você pode usar algumas tags HTML, como <b>, <i>, <a>

A moderação de comentários foi ativada. Todos os comentários devem ser aprovados pelo autor do blog.

Depois de enviar seu comentário, será necessário fazer login.
Prove que você não é um robô