Ir para conteúdo

POWERED BY:

Arquivado

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

vhbsouza

[Resolvido] Leitura de String

Recommended Posts

Oi...

 

eu estou fazendo a leitura de uma array string

 

e não quero que o programa reconheça o caracter (espaço) como uma string.

 

O meu problema é esse:

Não posso usar scanf pq a string pode ser composta de mais de um nome e o scanf reconhece o (espaço) como separador de string então no exemplo:

sao paulo

usando o scanf a string "sao" vai para a primeira variavel e "paulo" vai para a segunda variavel....

 

e quando eu uso gets ele resolve esse problema, mais ele passa a reconhecer (espaço) como uma string e então a armazena na variável.

 

for (i=0;i<4;i++)
   {
	  textcolor(4);
	  textbackground(7);
	  cprintf("\nLEIA O NOME DA CIDADE %d:\r\n=>",i+1);
	  fflush(stdin);
	  gets(cidades[i]);
	  strupr(cidades[i]);//converte os caracteres para maiúsculo
	  //Verifica se o número esta no vetor.
	  for(j=i-1;j>=0;j--)
			if(strcmp(cidades[j],cidades[i])==0)
		 {
				i--;
   			j=-1;
			textcolor(66);
			textbackground(7);
   			cprintf("\nESSE NOME JA ESTA NO VETOR, INSIRA NOVAMENTE.\r\n");
   		}
	  }

 

Alguém pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nao entendi muito bem oq você qr..

o usuario pode digitar espaco assim:

Sao Paulo

e na variavel você qr q armazene:

SaoPaulo

ow nd a ver.. explica melhor...

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nao entendi muito bem oq você qr..

o usuario pode digitar espaco assim:

Sao Paulo

e na variavel você qr q armazene:

SaoPaulo

ow nd a ver.. explica melhor...

 

[]s

 

----------------------------\\------------------------------------\\--------------------------

 

o negócio é o seguinte...

 

Quando eu vou fazer a leitura das strings

 

tenho uma string array de 4 espaços,

 

 

Eu digito

Sao Paulo

e o que acontece é que

 

Sao vai para um dos espaços da arry

e Paulo vai para outro dos espaços da array

 

restando então 2 espaços para uma array de 4 espaços....ENTENDEU?

sendo que o que eu queria era que a string

SAO PAULO

ficasse em um único espaço na memória, restando então três espaços

Esse problema não ocorre, mais o que acontece é o surgimento de outro problema que é o do (space)

Pois quando eu vou fazer a leitura e não digito nada o GETS aceita como string esse "nada"

...Entende?

Compartilhar este post


Link para o post
Compartilhar em outros sites

FHUDASHF juro q ainda naum entendi.

tente assim vai:

fgets(sVar, 255, stdin);
sVar[strlen(sVar)-1] = '\0';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode fazer um loop, realizando o fgets, e comparando o que ele conseguiu com uma string em branco ou com um espaço. Se for diferente, aceita a string digitada e termina o loop.

Compartilhar este post


Link para o post
Compartilhar em outros sites

#include <stdio.h>
int main() {
 char V[20];
 scanf("%[^\n]",&V);
 return 0;
}

 

Se você digitar "Sao Paulo" e der printf, vai ser impresso "Sao Paulo",armazenado em V somente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

c for um codigo legal para os outros aprenderem poste lah..

agora c for um programa simples, poste aki somente para registrar, pq vai q alguem tem a msm duvida..

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.