msmsms Posted February 9, 2013 at 10:47 PM Report #494728 Posted February 9, 2013 at 10:47 PM (edited) eu estou a experimentar fazer printf com strings e dá erro se for com valor já consigo compilar sem erro #include <stdio.h> #include <stdlib.h> int main() { char nome = "blablabla"; printf("nome: %s", nome); } o que tenho de errado no meu programa para imprimir um nome? estou a usar o ubuntu 12 se eu fizer #include <stdio.h> #include <stdlib.h> int main() { char idade = 10; printf("idade: %d", idade); } desta forma tudo corre bem Edited February 9, 2013 at 10:49 PM by msmsms
HappyHippyHippo Posted February 9, 2013 at 10:50 PM Report #494729 Posted February 9, 2013 at 10:50 PM char é um tipo de dados que define um valor numérico de 1 byte (8 bits) de pode guardar um valor de -128 a 127 o que tu queres é guardar o valor da posição de memória (referência) que indica uma lista de valores descrito acima: char * nome = "blablabla"; IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
pmg Posted February 9, 2013 at 11:34 PM Report #494733 Posted February 9, 2013 at 11:34 PM (edited) Uma alternativa à sugestão do Hippo é definir um array de caracteres para a string char nome1[] = "blablabla"; /* nome1 é um array com 10 elementos */ char nome2[10] = "blablabla"; /* também tem 10 elementos */ char nome3[11] = "blablabla"; /* 11 elementos: os 2 ultimos elementos tem o mesmo valor */ char nome4[9] = "blablabla"; /* código que não gera uma string: nome4 não tem espaço para o '\0' */ char nome5[8] = "blablabla"; /* codigo invalido: a string original é maior que o espaço de nome5 */ Edited February 9, 2013 at 11:37 PM by pmg What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
msmsms Posted February 10, 2013 at 02:12 AM Author Report #494775 Posted February 10, 2013 at 02:12 AM char é um tipo de dados que define um valor numérico de 1 byte (8 bits) de pode guardar um valor de -128 a 127 o que tu queres é guardar o valor da posição de memória (referência) que indica uma lista de valores descrito acima: char * nome = "blablabla"; obrigado pela resposta cientifica o que eu precisava mesmo nesta fase era de saber que tenho de usar o (*) não me vou esquecer mais deu certo com o (*) 😉
msmsms Posted February 10, 2013 at 04:07 AM Author Report #494777 Posted February 10, 2013 at 04:07 AM voltei a fazer uma nova experiência pedindo o nome através de um scanf e obtenho o mesmo erro #include <stdio.h> #include <stdlib.h> int main() { char *nome; printf("nome ="); scanf("%s", &nome); printf("%s", nome); } como resolvo?
HappyHippyHippo Posted February 10, 2013 at 04:25 AM Report #494778 Posted February 10, 2013 at 04:25 AM isso é um assunto um pouco complexo, mas vamos lá ver se consigo ser claro quando tens o seguinte código: char * frase = "a frase existe"; isto quer dizer que a frase "a frase existe", existe em memória. é alocada e escrita pela aplicação no momento que é executada. é por isso que se chama de string estática. o que estás a fazer, é na realidade a guardar na variável frase, essa posição de memória. no código que agora apresentas, não é isso que estás a fazer. estás somente a declarar uma variável que aponta para uma posição de memória em que os dados serão interpretados como char's. nem sequer estás a inicializar o seu valor. por outras palavras, não existe local definido de memória onde guardar a string que irás ler do teclado. espero que tenha sido claro no mínimo número de palavras IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now