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.