Avatar billede lotze Nybegynder
13. november 2003 - 19:22 Der er 12 kommentarer og
1 løsning

Mystisk problem

Nedenstående program skulle gerne lægge et punktum og "usernavn"
til en iforvejen skabt string (eksterntnavn). Det virker tilsyneladende. Men når jeg så vil flytte denne string over i en char[20], så går det galt. kun de værdier inden punktummet bliver flyttet over.

Det ser således ud: filtxt.henrik skal flyttes,men X ender op med istedet at indeholde filtxt
Mystisk. Måske har det noget at gøre med at jeg arbejder i linux, gnu compiler. Kan blevet løses hurtigt på en anden måde?



string ekstrentnavn;
char user[20];
char x[20];

eksterntnavn=eksterntnavn +"."+ user;


  count=eksterntnavn.length();


  for(int taeller=0; taeller<count; taeller++)
  {

  x[taeller]=eksterntnavn[taeller];
  }
Avatar billede thomas_nj Nybegynder
13. november 2003 - 19:30 #1
Hvorfor vil du have din string flyttet over i en char???
Avatar billede thomas_nj Nybegynder
13. november 2003 - 19:31 #2
eksterntnavn="eksterntnavn +"."+ user";  kunne godt være fejlen
Avatar billede arne_v Ekspert
13. november 2003 - 19:32 #3
Er 20 stort nok ?

Du må mangle en terminerende nul byte !
Avatar billede arne_v Ekspert
13. november 2003 - 19:33 #4
Jeg ville nok lave det som:

strcpy(x,eksterntnavn.c_str());
strcat(x,".");
strcat(x,user);
Avatar billede thomas_nj Nybegynder
13. november 2003 - 19:33 #5
du kan ikke bruge " midt i en streng da dette gør at compileren tror at strengen slutter. Altså den tror at strengen slutter ved det første " i +"."+ og tager derfor ikke resten med
Avatar billede arne_v Ekspert
13. november 2003 - 19:36 #6
thomas>

Det problem er kun i din kommentar ikke i hans kode.

(det giver iøvrigt compile fejl ikke forkert resultat)
Avatar billede lotze Nybegynder
13. november 2003 - 19:43 #7
Til thomas
Det sjove er at jeg laver en cout<<eksterntnavn og den udskriver det rigtigt nok, men når jeg kommer til overflytningen så går det galt.

Grunden til at jeg bruge char[20] er fordi det skal over i en database hvor feltet er sat op til char 20
Avatar billede thomas_nj Nybegynder
13. november 2003 - 19:43 #8
arne v->    eksterntnavn=eksterntnavn +"."+ user; giver helt klart en fejl i min compiler......
Avatar billede thomas_nj Nybegynder
13. november 2003 - 19:45 #9
eller har jeg bare misforstået det hele
Avatar billede lotze Nybegynder
13. november 2003 - 19:52 #10
Til arne

Nu virker det med dit eksempel.
Jeg kører med gnu compileren, derfor kan der være forskel, den burde også give en fejl hos mig men...
Avatar billede arne_v Ekspert
13. november 2003 - 19:53 #11
STL string + char * = STL string

det burde være OK

(eksterntnavn er stavet forkert men det må være en typo)
Avatar billede arne_v Ekspert
13. november 2003 - 19:55 #12
OK
Avatar billede thomas_nj Nybegynder
13. november 2003 - 19:56 #13
Havde helt misforstået koden men forstår meningen nu. Unskyld jeg har været mere til forviring end gavn :(
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester