Ir ao conteúdo

String em C


tiagotrevo

Posts recomendados

Postado

boa tarde, porque essa variavel fica assim:

char nome[50];

printf("Nome:");

scanf("%s", &nome);

printf("Nome: %s", nome);

Se eu entrar como nome Joao Pedro, esse exibe assim:

Nome: Joao

Obrigado.

Postado

A função scanf faz a leitura da entrada até o primeiro caracter em branco ou carriage return.

Para que você leia uma linha inteira, pode utilizar a função gets

int main()

{

char string [256];

printf ("Informe seu nome: ");

gets(string);

printf ("Você digitou: %s\n",string);

return 0;

}

Apenas tome cuidado com a reserva de espaço na variável que vai receber as informações.

Talvez, seja melhor fazer um looping pegando cada caracter (com a função getchar)e montando a string, testando os limites de tamanho.

Postado
A função scanf faz a leitura da entrada até o primeiro caracter em branco ou carriage return.

Para que você leia uma linha inteira, pode utilizar a função gets

int main()

{

char string [256];

printf ("Informe seu nome: ");

gets(string);

printf ("Você digitou: %s\n",string);

return 0;

}

Apenas tome cuidado com a reserva de espaço na variável que vai receber as informações.

Talvez, seja melhor fazer um looping pegando cada caracter (com a função getchar)e montando a string, testando os limites de tamanho.

Obrigado, eu até li sobre esse gets....e até qro usar ele, mas ele funciona em linux??

você sabe algum material na internet sobre programação em C com bando de dados para linux....eu nao acho nada.

obrigado.

Postado

O gets() não é uma função aconselhável de ser usada, pois traz uma brecha de segurança (ela nao verifica se a string digitada cabe na variavel). O GCC inclusive vai emitir um aviso ao compilar (algo como: 'gets is dangerous and should never br used').

Para ler eu uso um scanf, dessa forma:


scanf("%20[^\n]s",string1);

Com isso ele vai truncar a minha string caso ela tenha mais de 20 caracteres

So que isso deixa um '\n' no buffer, e isso pode atrapalhar o próximo scanf().

Agora eu fiz uma funcazinha que da conta de limpar o buffer e funciona na maioria das vezes, mas fica mais fácil usar um getchar() depois de chamar o scanf (sempre tive sucesso nisso)

Qualquer duvida, estamos aí

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...