Ohjelman tarkoitus olisi lukea Puskuri1:sta ensimmäiseen pilkkuun asti ja kopioida ne merkit puskuri2:een.
Ohjelma toimii muuten hyvin mutta koska puskuri1 ei ole pakosti muotoa char niin ohjelma kaatuu välillä.
Mitenkä saan tämän bugin korjattua?
Tälläinen on sscanf komento:
sscanf(puskuri1,"%[^,]",puskuri2);
Ohjelma toimii muuten hyvin mutta koska puskuri1 ei ole pakosti muotoa char niin ohjelma kaatuu välillä.
Mitenkä saan tämän bugin korjattua?
Tälläinen on sscanf komento:
sscanf(puskuri1,"%[^,]",puskuri2);
Vastaukset 4
Vanhimmat
niin pitäis olla sama onko siellä yks vai enemmän
char puskuri [20];
sscanf(puskuri1,"%s",puskuri2);
sitten menet puskuri2 läpi merkki kerrallaan, että onko siellä sitä pilkkua?
pelkkä %c lukis aina merkin kerrallaan ja sitä voisit sitten vertailla siihen pilkkuun
http://www.cplusplus.com/reference/clibrary/cstdio/sscanf.html
Siis mitä ihmettä? Etsit pilkkua puskurista 'joka ei ole pakosti muotoa char'??
Siis onko puskuri char-taulukko vai ei? Jos on, ei pilkun etsintään mitään sscanf:fia tarvita.
for (int i=0; i < strlen(puskuri); i)
if (puskuri[i] != ',')
puskuri2[i] = puskuri[i];
else
break;
sscanf(puskuri1,"%s,",puskuri2);
Tämän pitäisi pakottaa:
sscanf(puskuri1,"%[^,]s",puskuri2);
muista nollata puskuri2 vaikka memset kutsulla.