Wyodbrębnianie elementów z ciągu znaków


(klonmarcin) #1

witam, mam taki problem:

mam napisać program, który ma wczytywać ciąg znaków w postaci

a+b

w miejscu plusa mogą być inne działania jak odejmowanie, mnożenie i dzielenie

w miejscu a i b będą wpisywane liczby np. 2+3

i teraz jak wyodrębnić te dwie liczby i działanie ??

i jak skonwertować je z ciągu znaków na liczby int lub float ??

do konwersji myślę użyć funkcji atoi() lub atof(), a do wyodrębnienia funkcji strtok(), ale nie wiem czy to będzie działać

bardzo proszę o pomoc

:slight_smile:


(Fiołek) #2
int a, b; char dzialanie; sscanf(str, "%d %c %d", &a, &dzialanie, &b);

lub(ze strchr)

const char* spacja = strchr(str, (int)' ');

//jeśli ciąg jest w takim formacie jakim podałeś, to "spacja" wskazuje na pierwszą spacje, "spacja + 1" na działanie a "spacja + 3" na początek następnej liczby

int a = atoi(str);

char dzialanie = *(spacja + 1);

int b = atoi(spacja + 3);

Niesprawdzane.


(klonmarcin) #3

a co jeśli serwer dostaje od klienta tablicę znaków char w, której zapisany jest ten ciąg

a+b

to wtedy pierwsze rozwiązanie odpada, także sprawdzę to drugie.

:slight_smile:


(Bela Daniel) #4

Przecież w C każdy string jest tablicą znaków char ;>


(klonmarcin) #5

wielkie dzięki, działa jak należy.

:slight_smile: