Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Entre para seguir isso  
baiooo

Ler strings e numeros separados por @ e #

Recommended Posts

Boa tarde.

Qual código eu posso utilizar para ler a seguinte entrada:

string1#numero1@numero2#string2

por exemplo:

abcd#123@456#efgh

string1 = abcd

numero1 = 123

numero2 = 456

string2 = efgh

Qualquer ajuda é bem vinda.

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pegue toda a entrada e aloque num vetor de caracteres (string). Se a entrada for um scanf, declare um vetor de tamanho adequado e use scanf("%s", &var);. Se for de um arquivo, use fgetc e aloque num vetor igualmente.

Então varra o vetor normalmente com um for. Os primeiros caracteres você sabe que sao a string1, então coloque num novo vetor, string1. Vá testando caracter por caracter até encontrar o #. Neste momento você sabe que a string1 acabou. Adicione um \0 pra dar fim na string. Continue a leitura e os proximos caracteres serão o numero 1. Vá colocando em outro vetor string até encontrar o @. Feche a string com \0. Aí você pode usar a função atoi para converter em inteiro. E continue até ler toda a string de entrada.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Valeu Lotus!

    Eu pensei nesta mesma maneira inicialmente.

    Mas e utilizando a função sscanf tem como?

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Sim... faça por exemplo:


    #include <stdio.h>
    #include <string.h>

    char entrada[50], string1[10], num1[10];
    int i, j, numero1;

    scanf("%s", &entrada);

    i = 0;
    for (j = 0; entrada[i] != '#'; j++) {
    string1[j] = entrada[i];
    i++;
    }
    string1[j] = '\0';
    i++;
    for (j = 0; entrada[i] != '@'; j++) {
    num1[j] = entrada[i];
    i++;
    }
    num1[j] = '\0';
    numero1 = atoi(num1);
    i++;

    Ainda falta repetir mais 2 vezes pras 2 últimas sequencias. No final você testa entrada != '\0'. E não testei o código, pode ter algum erro aí que precise de ajuste.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Acho que você não entendeu o que eu disse...

    Tem uma função(sscanf) que permite que voce faça de uma maneira rápida a retirada dos dois numeros desta string por exemplo: "(2,3)". Nesta função você declara algo do tipo "(%d,%d)" e funciona.

    Já viu alguma coisa do tipo?

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    scanf ("%s#%d@%d#%s", str1, &num1, &num2, str2);

    tente isso

    Editado por CaioTakano
    correção

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário

    Entre para seguir isso  





    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

    Direitos autorais

    Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

    ×