Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++ Ongelmia char taulukon kanssa

Jtm [27.12.2004 23:05:26]

#

Tässä on pätkä koodistani:

char* Nimi = "Tauno"; //Nimi, johon myöhemmin yritetään liittää sukunimi.
char* Sukunimi = "Tepastelija"; //Sukunimi
int Pituus[2] = {strlen(Nimi), strlen(Sukunimi)}; //Kummankin pituus taulukkoon
char* Temp = new char [Pituus[0]+Pituus[1]+1]; //Luodaan Temp taulukko
for (int i = 0; i < Pituus[0]; i++) Temp[i] = Nimi[i]; //Siirretään Nimi Temp taulukkoon
Temp[Pituus[0]] = ' '; //Lisätään väli-merkki
for (int i = 0; i < Pituus[1]; i++) Temp[Pituus[0]+1+i] = Sukunimi[i]; //Siirretään Sukunimi Temp taulukkoon
Nimi = Temp;
cout << Nimi << endl; // Pitäisi näyttää konsolissa "Tauno Tepastelija", mutta näyttääkin "Tauno Tepastelijadows_NTZ"

Ihmettelen mistä kyseinen "dows_NTZ" tuli taulukon perään? Olen kokeillut esimerkiksi lisätä "Torkkuja" sukunimeksi, niin silloin perään ilmestyi "Wi[". Olen myös kokeillut käyttää "strcpy" ja "strcat" funktioita. Mutta silloinkin tapahtuu lähes sama.
Onko kenelläkään tietoa miksi näin käy? Ja miten korjata se?
Käytän kääntäjänä uusinta Dev-C++.
Kiitos avusta etukäteen!

Antti Laaksonen [27.12.2004 23:25:22]

#

Temp-taulukosta taitaa jäädä puuttumaan merkkijonon lopetusmerkki (\0), jolloin varsinaisen tekstin jatkeeksi tulee pätkä muuta sattumalta muistissa olevaa tekstiä. Määrittele siis Temp-taulukko yhtä nykyistä suuremmaksi ja pane viimeiseen alkioon \0-merkki.

Jtm [27.12.2004 23:44:44]

#

Kiitos, nyt alko toimimaan :)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta