Jump to content

Uso de scanf para isolar elementos duma string


Recommended Posts

Posted (edited)

Ajuda com sscanf:

Tenho a seguinte string:

char a[]="LAPTOP A#SERVER C#30";
char n1[20],n2[20];
int mts;
sscanf(a,"%s#%s#%d",n1,n2,&mts);

Não deveria separar a string pelos # ?

ficaria:

n1=LAPTOP A
n2=SERVER C
mts=30

RESOLVIDO:

char a[]="LAPTOP A#SERVER C#30";
   char id1[20];
   char id2[20];
   char tipo1[20];
   char tipo2[20];
   char mts[5];
   //testmygrafo();
   sscanf (a,"%[^'#']#%[^'#']#%[^'#'],%s",id1,id2,mts);
   sscanf(id1,"%s %s",tipo1,id1);
   sscanf(id2,"%s %s",tipo2,id2);
   //printf("%d\n",&mts);
   printf("%s",tipo1);
   printf("--- %s",id1);
   printf("%s",tipo2);
   printf("--- %s",id2);
   printf("%d",atoi(mts));

Se alguém tiver melhor solução, aceita-se de bom grado, do tipo só usando 1 sscanf.

Edited by pmg
adicionei LP ao GeSHi

" Elogios não me elevam, ofensas não me rebaixam, sou o que sou e não o que acham! "

Posted

Nova dúvida: novo tópico. Separar as dúvidas por temas torna a pesquisa mais eficiente e permite discussões mais alongadas em cada tópico sem se misturarem as coisas.

O problema com o scanf() é que o especificador de conversão "%s" separa o input por espaços em branco.

Se os tipos são um caracter podes fazer assim (atenção à inicialização dos ids para fazer o resultado de meter um caracter em id[0] ficar uma string)

char a[] = "LAPTOP A#SERVER C#30";
char tipo1[20], tipo2[20];
char id1[20] = {0}, id2[20] = {0};
char mts[5];
if (sscanf(a, "%19s %c#%19s %c#%4s", tipo1, id1, tipo2, id2, mts) != 5) /* erro */;

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

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
×
×
  • Create New...

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.