duvida em string

1. duvida em string

Marcos Silva
marcossilva

(usa Slackware)

Enviado em 18/08/2007 - 13:48h

Pessoal, eu crio uma variável da seguinte forma em c:

char frase[100];

td bem. entre tanto, ao armazenar a frase com:

scanf("%s", frase);

na hora de imprimir na tela, aparece apenas a primeira palavra da frase.

Alguém pode me dizer o que está acontecendo ??

Abraços1!


  


2. Re: duvida em string

Andi
upc0d3

(usa Gentoo)

Enviado em 18/08/2007 - 16:48h

sim eu posso dizer o que está acontecendo...hehe..

tu tem que usar funções para manipulação de strings.
exemplo:
char nome[20];
printf("Digite o seu nome: ");
gets(nome);

printf("%s\n",nome);

desta forma irá aparecer tudo.

continuando o exemplo:
eu digito: Albert Einstein

quando for imprimir na tela irá aparecer:
Albert Einstein.


char <NOME>[40];

tu tah dizendo para o compilardor criar uma variavel do tipo CHAR, com no maximo 40 caracteres(ou tambem, pode pensar em coluna, no caso são 40 colunas).

se tu digitar uma palavra com 50 caracteres ele soh vai pegar os primeiro 40.

outro exemplo:

char nome[5];
printf("Digite o seu nome: ");
scanf("%s",&nome);

-->> se eu digitar por exemplo: ALBERT

ai depois mandar imprimir....
soh ira aparecer:
ALBER


espero ter ajudado....
de uma olhada nas funções para manipulação de strings que tu vai entender melhor/mais.

flo ai...
abraço!


3. Re: duvida em string

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 22/08/2007 - 14:25h

No intuito de sermos BONS PROGRAMADORES, devo assinalar equivocos na resposta anterior.

1) no scanf, para ler strings, NAO SE PASSA o endereço. Seria apenas gets(nome);
ou scanf("%s", nome)

2) Por favor, não usem gets! É por conta de se usar estas funções que temos tantos problemas de ataque de buffer overflow. O gets, assim como o scanf, permite escrever além da capacidade da string. Usem o fgets que é bem melhor:

fgets(nome, 10, stdin);

Sendo 10 o tamanho definido para a string.