sl@ckw@re Postado Maio 12, 2007 Denunciar Share Postado Maio 12, 2007 A minha dúvida é a seguinte:Na linguagem C não existe a variável String?Pois eu queria fazer um programa para digitar o nome da pessoa e depois ler o nome da pessoa.Exemplo:{Escreva("Qual é o seu nome:");leia(nome);Escreva("Qual é o seu sobrenome:");leia(sobrenome)Escreva("Seu nome é:",nome,sobrenome);} Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonas de Abreu Postado Maio 12, 2007 Denunciar Share Postado Maio 12, 2007 Embora o tipo string não exista em C, representamos uma string como um vetor de caracteres terminado em '\ 0' (null terminated strings).Da para fazer o seu programa assim:int main(){ char nome[100]; char sobrenome[100]; printf("Digite seu nome\n"); scanf("%s\n", nome); printf("Digite seu sobrenome\n"); scanf("%s\n", sobrenome"); printf("Seu nome é: %s %s\n", nome, sobrenome); return 0; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 sl@ckw@re Postado Maio 12, 2007 Autor Denunciar Share Postado Maio 12, 2007 (editado) O programa não foi,veja:#include <stdio.h> #include <stdlib.h> int main() { char nome[100]; char sobrenome[100]; printf("Digite seu nome\n"); scanf("%s\n", nome); printf("Digite seu sobrenome\n"); scanf("%s\n", sobrenome"); printf("Seu nome é: %s %s\n", nome, sobrenome); return 0; }Erro na compilação:cd '/home/kurumin/nome/debug' && WANT_AUTOCONF_2_5="1" WANT_AUTOMAKE_1_6="1" make -k make all-recursiveMaking all in srcgcc -DHAVE_CONFIG_H -I. -I.. -I/home/kurumin/nome/src -O0 -g3 -muito nome.o -MD -MP -MF .deps/nome.Tpo -c -o nome.o /home/kurumin/nome/src/nome.c/home/kurumin/nome/src/nome.c: In function 'main':/home/kurumin/nome/src/nome.c:11: error: missing terminating " character/home/kurumin/nome/src/nome.c:12: error: expected ')' before 'printf'/home/kurumin/nome/src/nome.c:14: error: expected ';' before '}' token/home/kurumin/nome/src/nome.c:5: warning: return type of 'main' is not 'int'make[2]: ** [nome.o] Erro 1make[2]: O alvo `all' não foi reprocessado por causa de erros.make[2]: Nada a ser feito para `all-am'.make[1]: ** [all-recursive] Erro 1make: ** [all] Erro 2*** Saiu com estado: 2 *** Editado Maio 12, 2007 por sl@ckw@re Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonas de Abreu Postado Maio 12, 2007 Denunciar Share Postado Maio 12, 2007 Desculpe. Tem um pequeno erro no meu codigo. como eu tinha digitado direto aqui, coloquei um " a mais em uma das linhas. o codigo correto é :#include <stdio.h> int main() { char nome[100]; char sobrenome[100]; printf("Digite seu nome\n"); scanf("%s\n", nome); printf("Digite seu sobrenome\n"); scanf("%s\n", sobrenome); printf("Seu nome é: %s %s\n", nome, sobrenome); return 0; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 sl@ckw@re Postado Maio 13, 2007 Autor Denunciar Share Postado Maio 13, 2007 O seu programa tem um pequeno erro,por causa do comando "\n" no "Scanf",sendo assim toda vez que você executar o programa,você terá que digitar o seu nome>apertar enter>digitar outro nome e apertar enter,depois desse processo e que será executada a pergunta("Digite o seu sobrenome").Para corrigir o programa é só tirar o"\n" do "scanf",ficando dessa maneira:#include <stdio.h> int main() { char nome[100]; char sobrenome[100]; printf("Digite seu nome:\n"); scanf("%s", nome); printf("Digite seu sobrenome:\n"); scanf("%s", sobrenome); printf("Seu nome é: %s %s\n", nome, sobrenome); return 0; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonas de Abreu Postado Maio 13, 2007 Denunciar Share Postado Maio 13, 2007 Verdade.... é isso que da so ver se o programa compila e nem chegar a rodar ele hahahaha Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Marcos Bravin Postado Março 16, 2016 Denunciar Share Postado Março 16, 2016 Em 13/05/2007 at 13:56, sl@ckw@re disse: O seu programa tem um pequeno erro,por causa do comando "\n" no "Scanf",sendo assim toda vez que você executar o programa,você terá que digitar o seu nome>apertar enter>digitar outro nome e apertar enter,depois desse processo e que será executada a pergunta("Digite o seu sobrenome"). Para corrigir o programa é só tirar o"\n" do "scanf",ficando dessa maneira: #include <stdio.h> int main() { char nome[100]; char sobrenome[100]; printf("Digite seu nome:\n"); scanf("%s", nome); printf("Digite seu sobrenome:\n"); scanf("%s", sobrenome); printf("Seu nome é: %s %s\n", nome, sobrenome); return 0; } Poderia incluir mais uma biblioteca Sobre o idioma a locale.h assim corrigiria o acentuação ficaria assim... #include <stdio.h> #include <locale.h> int main() { setlocale(LC_ALL, "Portuguese"); char nome[100]; char sobrenome[100]; printf("Digite seu nome:\n"); scanf("%s", nome); printf("Digite seu sobrenome:\n"); scanf("%s", sobrenome); printf("Seu nome é: %s %s\n", nome, sobrenome); return 0; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Matheus Doros Postado Janeiro 5, 2018 Denunciar Share Postado Janeiro 5, 2018 Boa noite , vocês não estao esquecendo de por o "&" (e comercial)?? #include <stdio.h> #include <stdlib.h> int main() { char nome[100]; char sobrenome[100]; printf("Digite seu nome:\n"); scanf("%s", &nome); printf("Digite seu sobrenome:\n"); scanf("%s", &sobrenome); printf("Seu nome é: %s %s\n", nome, sobrenome); return 0; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 vangodp Postado Janeiro 8, 2018 Denunciar Share Postado Janeiro 8, 2018 Não! Em ponteiros e strings definitivamente não se põe o & adiante. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Visitante Postado Janeiro 9, 2018 Denunciar Share Postado Janeiro 9, 2018 Gostei da dica sobre a biblioteca "locale.h". Inda não conhecia. Porém, pelo que está parecendo, foge do padrão ANSI. Estou certo? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Cerqueira Junior Postado Setembro 15, 2018 Denunciar Share Postado Setembro 15, 2018 #include <stdio.h> main(){ char nome[100], sobrenome[100]; printf("Digite seu nome"); fgets(nome,99,stdin); printf("Digite seu sobrenome"); fgets(sobrenome,99,stdin); printf("o nome digitado foi: %s %s",nome,sobrenome); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Visitante Postado Setembro 17, 2018 Denunciar Share Postado Setembro 17, 2018 Uma maneira alternativa para usar o fgets, já fazendo o tratamento de sujeira no buffer, seria colocando ele em uma função: #include <stdio.h> #include <string.h> void read_string(char *the_string, int size) { char ch; fgets(the_string, size, stdin); strtok(the_string, "\n"); if (strlen(the_string) == size - 1) { while ((ch = getchar()) != '\n' && ch != EOF); } } int main(void) { char nome[50], sobrenome[50]; char nome_completo[100]; printf("Digite seu nome: "); read_string(nome, 50); printf("Digite seu sobrenome: "); read_string(sobrenome, 50); printf("Seu nome completo: %s %s\n", nome, sobrenome); printf("Digite seu nome completo: "); // ler o nome completo de uma só vez read_string(nome_completo, 100); printf("Seu nome completo: %s\n", nome_completo); return 0; } Caramba! Tem um post meu aqui onde dizia não conhecer ainda o arquivo de cabeçalho (biblioteca) "locale.h" rs... Obs: O que está sendo feito no while dentro da função é basicamente usar a função getchar em um loop Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
sl@ckw@re
A minha dúvida é a seguinte:
Na linguagem C não existe a variável String?
Pois eu queria fazer um programa para digitar o nome da pessoa e depois ler o nome da pessoa.
Exemplo:
{
Escreva("Qual é o seu nome:");
leia(nome);
Escreva("Qual é o seu sobrenome:");
leia(sobrenome)
Escreva("Seu nome é:",nome,sobrenome);
}
Link para o comentário
Compartilhar em outros sites
11 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.