Olisi tälläinen merkkijono:
07.05.2004 Parturi
Nyt pitäisi lukea jonoa ensinmäiseen pisteeseen asti ja tallettaa tieto muuttujaan päivä.
Sitten jatkaa seuraavaan pisteeseen asti ja tallettaa tieto muuttujaan kuukausi Mutta millä ihmeen komennolla tämä onnistuisi?
07.05.2004 Parturi
Nyt pitäisi lukea jonoa ensinmäiseen pisteeseen asti ja tallettaa tieto muuttujaan päivä.
Sitten jatkaa seuraavaan pisteeseen asti ja tallettaa tieto muuttujaan kuukausi Mutta millä ihmeen komennolla tämä onnistuisi?
Vastaukset 7
Vanhimmat
Merkkijonossa olevan ensimmäisen vastaantulevan merkin saa vaikka strchr:lla. Merkkijonot muunnetaan vaikka atoi:lla, mutta koska atoi ei tarkista kunnolla virheitä (esim. atoi("asd") palauttaa nollan), niin kannattaa käyttää ennemmin vaikka strtol:ia. Seuraavat luvut saa haettua kutsumalla strchr:ää uudestaan siitä kohdasta, kun luettiin edellinen piste. Myös strtol:in toista argumenttia kannattaa käyttää hyödykseen tarkasteltaessa sitä kohtaa, mihin strtol:in lukumuunnos jäi.
Jotenkin tälleen olen yleensä parsinut stringejä (ei naisten stringejä).
char string[] = "07.05.2004 Parturi\n";
char seps[] = " .\n";
char *token;
char lineBuf[255];
// Tehdään kopio alkuperäisestä datasta:
strncpy(lineBuf, string, sizeof(lineBuf));
/* Establish string and get the first token: */
token = strtok( lineBuf, seps );
while( token != NULL )
{
/* While there are tokens in "string" */
printf( " %s\n", token );
/* Get next token: */
token = strtok( NULL, seps );
if (scanf(token, "%d",&nummero) == 1)
{
// nummero löytys !
}
}
// 1. kierroksella while silmukassa:
token = "07";
// 2. kierroksella while silmukassa:
token = "05";
// 3. kierroksella while silmukassa:
token = "2004";
// 4. kierroksella while silmukassa:
token = "Parturille";
string lause = "07.05.2004 Parturi";
string paiva;
string kuukausi;
for(int i=0; i
Ajappa tämä {Mitä tapahtuu kohdassa lause[i-3]}, suoraan sanottuna aika köntsä juttu :-(
string lause = "7.05.2004 Parturi";
string paiva;
string kuukausi;
for(int i=0; i
mä kopsasin tän kerran skolessa vaikka en mitään siit ymmmärtänukkään. jotain duunaa sekin - luulisin. funtsi siit jos viittit.
#include
#include
int main(void)
{
char input[25] = "05.12.2002.parturi";
char *p;
int n;
p = strtok(input, ".");
if (p) printf("%s\n", p);
for (n=0;n
vai, heh, kaikki oppilaat kopsaa saman vastauken (8-O
sscanf("07.05.2004 Parturi",
"%d.%d.%d %s",&p,&k,&v,buffer);