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

Sign in to follow this  
Dar3_D3vil

Problema na obtenção de strings!!!

Recommended Posts

Dar3_D3vil

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???

Share this post


Link to post
Share on other sites
Dar3_D3vil

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

Share this post


Link to post
Share on other sites
jarsantos

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

Share this post


Link to post
Share on other sites
Dar3_D3vil

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)

Share this post


Link to post
Share on other sites
jarsantos

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.

Share this post


Link to post
Share on other sites
Bruno

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

Share this post


Link to post
Share on other sites
redhat

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! =)ß


Software is like sex... it's better when it's free

in the old days

P@P "C" && "Linux" Moderator

Share this post


Link to post
Share on other sites
[PT]Devilishly
... 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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.