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!
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.
Kiitos, nyt alko toimimaan :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.