Joao Miguel Posted March 9, 2013 at 01:15 AM Report #498516 Posted March 9, 2013 at 01:15 AM (edited) Boa noite. Estou a fazer um trabalho em C e uma das funções auxiliares que preciso de implementar tem de pegar numa string e quando encontrar o primeiro numero converte-lo para inteiro. Passo a exemplificar: str1 = "abcdef235ghijkl" neste caso tem de dar o valor inteiro 235 str2 = "ab1234567890cdef" neste caso tem de dar o valor inteiro 1234567890 De notar que não sei nada sobre a string, ela é apenas passada por argumento na função, mais especificamente, não sei a quantidade de numeros que contém. Quem poder ajudar agradeço. Obrigado. Edited March 9, 2013 at 01:15 AM by Joao Miguel
HappyHippyHippo Posted March 9, 2013 at 02:26 AM Report #498518 Posted March 9, 2013 at 02:26 AM tens de implementar um ciclo que irá pesquisar pela primeira ocorrência de uma caracter numérico, depois basta usar o sscanf, dando o primeiro parâmetro como a posição de memória do elemento encontrado IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Localhost Posted March 9, 2013 at 09:15 AM Report #498521 Posted March 9, 2013 at 09:15 AM Não sabes nada sobre o inteiro? Então como esperas guardar números com muitos algarismos? Terás que fazer algumas verificações relacionadas com isso. here since 2009
pmg Posted March 9, 2013 at 10:28 AM Report #498522 Posted March 9, 2013 at 10:28 AM Podes usar o sscanf() como sugerido pelo Hippo, ou ir calculando o número caracter-a-caracter basicamente: arranjas um ponteiro para o primeiro caracter da string enquanto o ponteiro nao apontar para um digito ou '\0', avança o ponteiro enquanto o ponteiro apontar para um digito actualiza numero e avança o ponteiro 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!
AJBM Posted March 9, 2013 at 12:39 PM Report #498535 Posted March 9, 2013 at 12:39 PM (edited) Boas! Podes fazer um ciclo e verificar se uma determinada posição é um numero, usa a função isdigit() http://www.elook.org/programming/c/isdigit.html, se for digito colocas dentro de uma variável. Edited March 9, 2013 at 01:29 PM by pmg isDigit: tudo em minusculas
Joao Miguel Posted March 10, 2013 at 06:24 PM Author Report #498662 Posted March 10, 2013 at 06:24 PM Boas. Venho apenas dizer que resultou com o sscanf na perfeição. Não sabia que o sscanf assim que encontra-se um numero, passava para um único inteiro esse numero e as ocorrências sucessivas de números até deixar de encontrar um numero. Obrigado.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now