atribuindo valor a uma string com espaços em branco, via teclado.

1. atribuindo valor a uma string com espaços em branco, via teclado.

alcides ferreira de melo filho
alcidesjr

(usa Outra)

Enviado em 17/09/2007 - 10:04h

Galera..

Já postei algo parecido aqui no Forum, mas não funcionou.

Acontece que o valor que preciso adicionar via TECLADO na variavel é do tipo STRUCT.

alguem poderia me indicar que função eu uso..
Gets()
Fgets()
não funcionaram...

Aguardo.

Abraço.


  


2. Re: atribuindo valor a uma string com espaços em branco, via teclado.

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 17/09/2007 - 10:11h

Olha, independente ONDE tu estejas usando a leitura, sempre vai ser char str[100] (ou algo assim) mesmo sendo uma variável ou um campo dentro de uma struct. Qualquer função para ler string **DEVE** funcionar, sendo que recomendo o fgets.

Se não funcionou, teu erro deve ser outro que não tem nada a ver com leitura de strings.

Acaso não estás lendo um inteiro/double antes de ler a string??




3. Re: atribuindo valor a uma string com espaços em branco, via teclado.

alcides ferreira de melo filho
alcidesjr

(usa Outra)

Enviado em 17/09/2007 - 10:35h

Não estou lendo nenhm doblou e nem float.

Elgio, vc está Off no MSN?
vc me add recentimente, mas até então, só esta off..
abraço!!!


4. Re: atribuindo valor a uma string com espaços em branco, via teclado.

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 17/09/2007 - 14:00h

Tua struct só tem string?
O problema clássico de leitura de string após int/double/float pode estar ocorrendo:

scanf("%i", &valor);
fgets(st, 100, stdin);

No caso acima vai ler uma string vazia, pois vai ler o ENTER deixado pelo scanf. O ideal é ler e garantir que se leu string. Mas veja, estou SUPONDO que teu problema seja este, pois tu não deu nenhuma dica do que seria "Não funcionou". Não funcionou pq deu erro de sintaxe? Pq ele não lê? ...

Se foi pq não leu teu problema pode ser este. Uma solução SUJA, FEIA mas que funciona seria:

do
fgets(st, 100, stdin);
while (strlen(st) < 2);

Só, claro, troque st pelo nome da tua variável (ou no caso o campo da struct) e o 100 pelo tamanho máximo que ela suporta.


5. Re: atribuindo valor a uma string com espaços em branco, via teclado.

Andi
upc0d3

(usa Gentoo)

Enviado em 17/09/2007 - 16:30h

olha naum sei se entendi certo mas para atribuir um valor a uma variavel de estrutura tu precisa usar o operador ponto, vou colocar um exemplo aki:


typedef struct teste{
char nome[20];
int idade;
}

teste identificador;

printf("Digite um nome qualquer: ");
fgets(identificador.nome, 20, stdin);
printf("Digite uma idade qualquer: ");
scanf("%d",identificador.idade);


bom para atribuir valores a uma estrututra tu tem que usar deste modo eh impossivel usar assim soh:
fgets(nome,20,stdin);

OBS:presumindo que não seja um ponteiro, se for ponteiro tem que usar o operador seta: ' -> '.

ateh++++
abraço!


6. Re: atribuindo valor a uma string com espaços em branco, via teclado.

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 17/09/2007 - 16:47h

Sobre a mensagem do Andersnon (No_Name) permita-me ser um pouquinho cri-cri? hehehehe

typedef struct teste{
char nome[20];
int idade;
};

A definição abaixo SÓ FUNCIONA em C++, se a extensão for CPP.
teste identificador;

Em C Ansi, normal, o correto é:
struct teste identificador;

Mas em C ANSI para usar somente o teste sem o incomodo struct:

typedef struct {
char nome[20];
int idade;
}teste;

Acho que era isto que o Anderson quiz fazer desde o início.

printf("Digite um nome qualquer: ");
fgets(identificador.nome, 20, stdin);
printf("Digite uma idade qualquer: ");


scanf("%d",identificador.idade);

Na verdade o correto é:
scanf("%d",&identificador.idade);

Hehehe.
Bom, disse que era só para ser cri-cri.

Ainda, vocês sabem qual a diferença entre ler um inteiro com %i ou com %d? É "quase" a mesma coisa...

Abraços.


7. foi mal

Alison Torres Ribeiro
alisontori

(usa OpenSuSE)

Enviado em 17/09/2007 - 22:58h

no caso fica é assim

struct ali{
char str[100];
}ali;

scanf("%s",ali.str);

/*string é um vetor de caracter, no scanf voce usa %s mas na declaração voce vai dizer que é um char com o nome da variavel e de tantos caracteres*/

falou chegado!!!!!!!!!!




8. Re: atribuindo valor a uma string com espaços em branco, via teclado.

Andi
upc0d3

(usa Gentoo)

Enviado em 17/09/2007 - 23:12h

elgio, tu é professor neh?
deve saber bastante entaum ?
vai uma pergunta ai pra ti entaum:

pq qui no meo notebook, a minha placa de video s3 unichrome aparece detectada e configurada, e o KDE insiste em usar o VESA?
jah tentei editar o xorg.conf e colocar via nele.. mas naum deu certo....

uso o SUSE 10....

se souber agradeço mesmo...
flo ai meo... ateh+++


9. Re: atribuindo valor a uma string com espaços em branco, via teclado.

Andi
upc0d3

(usa Gentoo)

Enviado em 17/09/2007 - 23:13h

aahhh caso queria me dar uma explicação disso via e-mail pq aki naum eh lugar sim eu sei....

meu e-mail é:
andiroots@gmail.com

ateh++ abraço!


10. Re: atribuindo valor a uma string com espaços em branco, via teclado.

asurih
fusioneiko

(usa OpenBSD)

Enviado em 09/09/2009 - 01:45h

AAAAAAAAAAAAAAAA






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts