• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Dar3_D3vil

Problema na obtenção de strings!!!

10 mensagens neste tópico

Eu tou a fazer o trabalho final de programação e tou com um problema...

A obter strings, se usar

scanf(" %s",comando);

akilo ignorame os espaços e se usar

fgets(comando,DIMAX,stdin);

(o DIMAX ta definido como 100)

reconhece td mas depois n executa umas funçoes enkanto k com o scanf execute mas n le os espaços....

E o gets o meu stor diz k n se deve usar pk tem mtos problemas.

Alguem tem uma alternativa???

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

scanf(" %s",comando);

nao devias ter scanf("%s",comando);

o espaço que tem antes de %s, nao te traz problemas....comando tem k ser uma string...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Epah o prob é k o scanf ignora os espaços e o espaço n tem nd a ver com isso... ate testei com e sem espaço pa ter a certeza.

Se alguem souber de uma alternativa ou soluçao... avise

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o espaço é um char e o scanf apanha toda a string ate o \n por isso nao compreendo a duvida.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

N é duvida, lol, é certeza.

Teoricamente devia ler o espaço mas ignora-o,

e fiz scanf de uma string pa um vector de dimensao 100..

testei com menos de 10 caracteres(incluindo espaços).

depois fiz o printf da string, e akilo imprimiu sem espaços mas sim numa nova linha, tipo

se escrever help help aparece:

help

help

mas se escrever help help aparece:

help

help na mm.

:S

Mas o Bruno ja me ajudou a resolver isto fazendo assim:

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

so k agr akilo dame outro prob.

no printf o outoput é o k escrevi mas bues vezes ate eu fazer ctlr+c (serve pa parar a execuçao)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

não acaba o programa enquanto nao carregares em ctrl C? é porque esta em ciclo infinito.

em relação à cena da string eu acho que a melhor forma de apanhar texto é com o getchar, assim tens mais control sobre aquilo que o utilizador escreve, dá é mais trabalho.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se ainda tens problemas diz q eu ajudo-te... o problema da solução q te dei é q fica um '\n' no buffer... mas é facil solucionar! :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

hehehe ele pára pk (e estupidamente) o caracter que corresponde ao espaço eh igual ao de final de string ou seja '\0' e se bem me lembro (ja nao pego em C faz tempo, ando com outras linguagens agr) pra ultrapassar esse problema tive que passar a string para uma cadeia de chars (que eh efectivamente o que uma string e') e dp verificar um a um se era o '\0' ja n me recordo bem, mas penso que foi assim

boa sorte com o trabalho! =)ß

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
... passar a string para uma cadeia de chars (que eh efectivamente o que uma string e') e dp verificar um a um se era o '\0' ...
Esse é o algoritmo usado no strlen() para determinar o tamanho da string  :D
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora