Jos käsiteltävä merkkijono on esim "aa:bb:cc:dd", niin miten saisin siitä poimittua vaikka aa ja bb ja sijoitettua ne omiin char-tyyppisiin muuttujiinsa, jotta voin sitten vertailla niitä muihin merkkijonoihin? Kyseisen merkkijonon sain paloiteltua strtok() funktiolla, mutta siitä halutun palan poimiminen ei ota onnistuakseen.
"aa" tai "bb" ei voi sijoittaa char-tyyppiseen muuttujaan, koska kummassakin on enemmän kuin yksi merkki. Ehkä tarkoitit char-taulukkoa tai osoitinta char-taulukkoon..
Mikäs tuossa strtok-funktiossa tuottaa ongelmaa? Netistä löytyy ziljoona esimerkkiä jossa se toimii, joten jos pistäisit esimerkin jossa se ei toimi (oma koodisi) niin ei tarvitsisi yrittää arvata, mikä menee pieleen.
Esimerkiksi näin:
#include <string.h> #include <stdio.h> int main(void) { char str[] = "aa:bb:cc:dd"; char *sub[4]; sub[0] = strtok(str, ":"); // aa sub[1] = strtok(NULL, ":"); // bb sub[2] = strtok(NULL, ":"); // cc sub[3] = strtok(NULL, "\0"); // dd printf("%s %s %s %s\n", sub[0], sub[1], sub[2], sub[3]); return 0; }
No nyt sain homman toimimaan. Omaa koodia en tänne kaikkien logiikkavirheiden ja epäeleganttisuuksien takia kehdannut pistää :)
En ollut tuon strtokin toimintaa ihan täysin ymmärtänyt, ja vieläkin vähän hämärän peitossa mitä nuo NULLit merkkijonon paikalla tekee ja \0 delimiterinä.
Mutta kiitos kuitenkin avusta.
NULL tarkoittaa että jatketaan siitä mihin viimeksi jäätiin ja \0 tarkoittaa merkkijonon loppua (koska sen dd:n jälkeen ei ole : -merkkiä)
Aihe on jo aika vanha, joten et voi enää vastata siihen.