Tarkoituksena on saada stringistä "1 3 5 7-10" poimittua numerot 1,3,5,7,8,9,10
mikä tähän olisi paras keino?
kokeilin strncpy funktiota mutta se ei löydä viimeistä numeroa ellei sen perässä ole ylimääräistä erotinta.
Ainakin C:n sscanf() varmaan hoitaisi homman.
Vaan kuinka toimitaankaan, jos numeroiden määrää ei tiedetä?
Yritä ymmärtää tästä jotakin. Funktioiden dokumentaatioihin kannattaa tutustua, niin tietää, kuinka ne toimivat.
#include <stdio.h> int main(void) { int a, b, i, j, Taulu[100]; char c[100], *ptr; // Luetaan teksti (enintään 100 merkkiä) fgets(c, 100, stdin); c[99] = 0; // Pointteri tekstin alkuun ja taulukon lukujen määräksi nolla ptr = c; j = 0; // Niin kauan kuin pointteri ei osoita nollamerkkiin while (*ptr != 0) { // Luetaan luvut muodossa 1-2, i = montako luettiin i = sscanf(ptr, "%i-%i", &a, &b); // Yksi vai kaksi lukua? if (i == 1) { // Luku tauluun Taulu[j] = a; ++j; } else if (i == 2) { // Pienempi luettu a:han if (b < a) { i = a; a = b; b = i; } // Luvut a-b taulukkoon for (i = a; i <= b; ++i) { Taulu[j] = i; ++j; } } // Siirrytään seuraavaan merkkiin ja etsitään seuraava väli tai tekstin loppu ++ptr; while (*ptr != 0 && *ptr != ' ') ++ptr; } // Käydään taulu läpi ja tulostetaan for (i = 0; i < j; ++i) { printf("%i\n", Taulu[i]); } return 0; }
Aihe on jo aika vanha, joten et voi enää vastata siihen.