Tehtävä: Tee osoittimia käyttävä toteutus funktiolle int mjpit(char *mj); joka palauttaa mj:n pituuden.
Olen tehnyt seuraavan ohjelman:
#include
int mjpit(char *mj)
{
int koko=0;
for(koko=0; mj[koko]!='\0'; koko ); // etsii loppumismerkin
return koko;
}
int main(void)
{
char MerkkiJono[]="tässäonkolmekymmentäkaksimerkkiä";
int koko;
koko = mjpit(MerkkiJono);
printf("Merkkijonon pituus on %d merkkiä\n",koko);
return 0;
}
Tämä ohjelma palauttaa kyllä merkkijonon pituuden, mutta miten tätä täytyisi muuttaa jos sen haluaisi tehdä osoittimilla?!
Muutkin tehtävät ovat helppoja tehdä mutta en tajua alkuunkaan miten ne tehdään osoittimien avulla?!
2) char *skandi(char *mj); joka muuttaa mj:n skandinaaviset merkit vastaaviksi merkeiksi o,a,O,A. Funktio arvonaan muutetun merkkijonon.
3) char *ptakap(char *mj); joka kääntää mj:n sisällön takaperin kirjoitetuksi. Funktio arvonaan muutetun merkkijonon.
Apua osoittimiin
2
410
Vastaukset
- hemmoit
c- kielestä on aikaa mutta eiköhän näillä pääse alkuun.
1.
itseasiassa ratkaisusi on ok...
mj[koko]!='\0'
voidaan esitää vaikka näin (pointer arithmetic)
*(mj koko) != '\0'
tässä toinen
for(koko=0; *mj!='\0'; koko , mj );
2. Jos input stringiä saa muokata niin
for(koko=0; *mj!='\0'; koko , mj )
{
switch(*mj) {
case 'ä': *mj = 'a'; /* käytä heksa koodia ?*/
....
}
}
3.
http://discuss.fogcreek.com/techinterview/default.asp?cmd=show&ixPost=2077 - Torak
Otetaan vaikka toi 1 tehtävä.
int mjpit(char *mj)
{
char *p;
for(p=mj; *p; p );
return (p-mj);
}
1 rivi esitellään osoitin p.
2 vähän epäselvä for silmukka mutta:
p arvoksi asetetaan mj eli alkaa alusta.
Testataan onko p tosi. Eli != 0.
Siirretään p osoitinta yhtä muisti paikkaa eteenpäin, eli . Silmukan lopussa on ; kuvaamassa tyhjää lausetta, sen takia että enempää ei tarvitse silmukassa tehdä.
Eli nyt on osoitin p joka osoittaa merkkijonon loppuun ja mj joka osoittaa jonon alkuun. Tehdään vähennyslasku ja saadaan merkkijonon pituus. Ei eroa ei ole kovin paljoa.
2 tehtävään: if(*p == 'ä') *p = 'a';
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
- 2034266
SDP haluaa 40 000 nettomaahanmuuttajaa
SDP:n Suunnanmuutos-vaihtoehtobudjetissa, käy ilmi, että demarit itse asiassa vaativat räjähdysmäistä ”työperäisen” maah1463798Orpo: Velkajarrua vastustavaa puoluetta vaikea ajatella hallitukseen
No Minja Koskelan kommunistipuolue jäi ulos tuosta. Kaikki eduskuntapuolueet vasemmistoliittoa lukuun ottamatta sopivat1363255Hienoa! Eduskunta luopui käteisen käytöstä
Nyt tuo sama muutos pitää saada myös muuhun yhteiskuntaan. Käteistähän ei tarvitse tänä päivänä enää kuin rikolliset.511635Ikävä sinua mies
Vuosia kuluu, mutta tunteet ei ole hävinnyt. Tasoittuneet toki, kun ei olla nähty. Järki palannut päähän kuitenkin. Se i191528Mikä tämä henkilö mahtaa touhuta Parkanossa
Kamalaa https://www.ylasatakunta.fi/teksti/pirkanmaan-karajaoikeus-vangitsi-koiran-tappamisesta-epaillyn-6.68.127794.b58341470Sulla on avaimet ja keinot
Jos haluat jatkaa tutustumista. Itse olen niin jäässä etten pysty tekemään enää mitään. Pidempi keppi johon on helpompi251395Orpo loukkaantui fasismiin viittaavasta sanavalinnasta
Mutta miksi loukkaantui? Orpohan on tehnyt yhteistyötä fasistien kanssa jo vuonna 2019, siis jo neljä vuotta ennen loukk271351Kiinnostaa - ei kiinnosta - kiinnostaapas
Selittäkää hämmentyneelle miksi miehiä ei ikinä kiinnosta silloin, kun sitä olisi itsekin kiinnostunut? Sitten kun siirt1161160Martina haluaa Marbellaan
Martinan tekisi mieli ottaa lennot Marbellaan, jossa näkisisi kauniita ja hyväntuulisia ihmisiä. No sitten pitää matkust2151063