Svetelektro.com

Svetelektro.com

Meno:
Heslo:
SVETELEKTRO • Ziskanie hodnoty z retazca

Ziskanie hodnoty z retazca

C,C++,C#

Moderátori: psichac, Moderátori

Ziskanie hodnoty z retazca

Odoslaťod bebeno28 » 20 Júl 2017, 21:28

Ahojte.

Prosím Vás viete mi niekto poradit ako získam z retazca znakov pozadovanú hodnotu a previest ju na integer?

Píšem si kod v Arduino prostredí a neviem prísť ako ked príjmem String v tvare GET /58 HTTP/1.1 ako z toho viem dostat ciselnu hodnotu za lomítkom ?
Císlo bude vzdy od 0 po 100 .
Samozrejme potom to previest na Integer.

Dakujem
bebeno28
Stály člen
Stály člen
Príspevky: 175
Založený: 16.09.2012
Bydlisko: Trnava
Karma: 0

Re: Ziskanie hodnoty z retazca

Odoslaťod hen » 20 Júl 2017, 23:16

neotestoval som to, takže sa tam možno nájdu chyby, skôr ako inšpirácia jedného z riešení...
Číslo za lomítkom sa musí začínať na pozícii 5, čiže sa predpokladá že reťazec bude vždy v tvare "GET /..."
Kód: Vybrať všetko
String str = "GET /58 HTTP/1.1";
int base = 1;
int result = 0;

for(int i=7; i>4; i--)
{
   char digit = str.charAt(i);
   if(digit>='0' && digit<='9')
   {
      result = result+base*(digit-'0');
      base=base*10;
   }
}
Serial.print(result);
hen
Okoloidúci
Okoloidúci
Príspevky: 4
Založený: 12.12.2016
Bydlisko: BA
Karma: 0

Re: Ziskanie hodnoty z retazca

Odoslaťod jirka.jirka. » 21 Júl 2017, 10:58

Vyzkoušeno a funkční:

Proměnou potom najdeš v hodnotě cislo

EDIT: ještě jsem to trošku upravil. Vymazal jsem sprintf, přidal podle čeho to parsovat. AŤ se ta funkce dá použít i jinde.

Jinak doplním. Testováno a odladěno zde: https://codepad.remoteinterview.io
Kód: Vybrať všetko
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>

char string[] = "GET /10 HTTP/1.1";

/*Funkce, ktera provede extrakci dat z retezce*/
/*Velice jednoduse reseno*/
int dataven(char prikaz[], char *data[], char podleceho[])
{
    char *ch; //promenna pointer
    int i=0;
   
    ch = strtok(string, podleceho);    //najde prvni oddelovac a nahradi ho \0, dale se najde zacat umisteni retezce (adresa)
   
    while (ch != NULL)
    {
        //printf("%s\n", ch);
        ch = strtok(NULL, podleceho);    //nyni najde dalsi oddelovac a jeho adresu umisti do ch, potom se vypise, atd, atd az do zblbnuti
        data[i++] = ch;   
        i++;
    }
}

int main() {
    char *data[80];    //vystupni data
    char rozdel[] = " /";
    dataven(string, data, rozdel); //funkce pro extrakci dat
   
    int cislo = atoi(*data);    //konverze string to int
    printf("%d", cislo);    //no a uu enom vypis, ze to funguje
   
    return 0;
}
Prílohy
output.JPG
jirka.jirka.
Obrázok používateľa
Pokročilý člen
Pokročilý člen
Príspevky: 939
Založený: 17.10.2008
Bydlisko: Zlín
Karma: 9

Re: Ziskanie hodnoty z retazca

Odoslaťod jirka.jirka. » 21 Júl 2017, 12:56

A Eclipse taktéž souhlasí. :-) Ono zde taky není nic, co by nemělo fungovat. Určitě se tato funkce bude hodit i jiným.

EDIT: Jenom se musím omluvit, až teď jsem si všiml, že to je pro arduino. Proto mě prosím nebijte, ale nechám to tu, třeba už jenom pro pochopení. :)
jirka.jirka.
Obrázok používateľa
Pokročilý člen
Pokročilý člen
Príspevky: 939
Založený: 17.10.2008
Bydlisko: Zlín
Karma: 9

Re: Ziskanie hodnoty z retazca

Odoslaťod bebeno28 » 22 Júl 2017, 21:48

Dakujem páni za reakciu. musim si to rozkodovat riadok po riadku aby som pochopil co to robi ja som v Ckode a Arduine zaciatocnik.

Inak asi som sa unahlis pretoze v konecnom dosledku bude ten link troska iny a vlastne budu dva tipy. napadla ma este jedna funkcia pre moj projekt ktorou to chcem vylepsit tak pred premenou bude este bude /value= alebo /set= a az potom bude hodnota ktoru budem potrebovat . ale to aby asi nemalo vadit. Tam si len zemni asi hodnoty aby som kontroloval ine znaky s Stringu. Teda ak chapem o co tu vlastne ide.

Dakujem
bebeno28
Stály člen
Stály člen
Príspevky: 175
Založený: 16.09.2012
Bydlisko: Trnava
Karma: 0

Re: Ziskanie hodnoty z retazca

Odoslaťod bebeno28 » 26 Júl 2017, 17:17

Tak prisiel som na to ako to spravit v Arduine.

Toto je moj kod na ziskanie hodnoty zo Stringu.
Prílohy
Capture.JPG
bebeno28
Stály člen
Stály člen
Príspevky: 175
Založený: 16.09.2012
Bydlisko: Trnava
Karma: 0


Naspäť na C,C++,C#

Kto je prítomný

Užívatelia prezerajúci si toto fórum: Žiadny registrovaný používateľ a 0 hostí.

Forums ©
Autor stránky je Ondrej Závodský(zawin), o graficky design sa stará Ľuboš Fabo(BUFU).

TOPlist

Powered by Copyright © UNITED-NUKE CMS. All Rights Reserved.
Čas potrebný k spracovaniu stránky 0.31 sekúnd