Avatar billede noden Nybegynder
28. oktober 2004 - 10:48 Der er 9 kommentarer og
1 løsning

Fjern \n fra streng

Hvis man skal gøre det på "den rigtige måde", hvordan fjerner man så linieskift fra en streng?
Avatar billede fastpoint Nybegynder
28. oktober 2004 - 11:02 #1
I java..

System.out.println(); <- med linieskift
System.out.print(); <- uden linieskift

ved ikke om det siger dig noget
Avatar billede Slettet bruger
28. oktober 2004 - 11:08 #2
Hvis man går ud fra at du bruger STL i C++ kan følgende vel bruges...:

string myStr = "Test\n";
myStr  = myStr .substr(0,myStr.length()-1);

Virker dog kun hvis der er linieskift til slut i strengen...
Avatar billede noden Nybegynder
28. oktober 2004 - 11:09 #3
Desværre ikke.
Linieskiftet ligger i slutningen af strengen og skal fjernes.
Visuelt kunne det være "Test\n" som skulle ændres til "Test".

Hvis pValue pejer på strengen "test\n" burde pValue2 så ikke peje på "test" efter:
strncpy(pValue2,pValue,strlen(pValue)-2);
Avatar billede sovsekoder Nybegynder
28. oktober 2004 - 11:27 #4
du kan se hvilke bytes strengen består af:
for(int i=0; i<strlen(pValue); i++) {
  printf("%d ", pValue[i]);
}

og så se hvad der skal hugges af...
Avatar billede sovsekoder Nybegynder
28. oktober 2004 - 11:32 #5
det er operativ system afhængigt hvad der er line feed. windows : \n = 0x0a, så du skal kun trække een fra:
strncpy(pValue2,pValue,strlen(pValue)-1);
Avatar billede noden Nybegynder
28. oktober 2004 - 11:57 #6
Jeg ved ikke om der også ligger \r eller om det kun er \n
Men ellers burde det virke? (Enten med -1 eller -2)
Avatar billede sovsekoder Nybegynder
28. oktober 2004 - 11:58 #7
ja det brude det
Avatar billede noden Nybegynder
28. oktober 2004 - 12:00 #8
Ligger du et svar?
Jeg skal måske nævne at pValue er en pointer?!
Avatar billede sovsekoder Nybegynder
28. oktober 2004 - 12:34 #9
og et svar... men: har lige fundet ud af at strncpy ikke kopierer et '\0' ind tilsidst så det skal man altså selv gøre
Avatar billede sovsekoder Nybegynder
28. oktober 2004 - 12:35 #10
så du skal faktisk:
strncpy(pValue2,pValue,strlen(pValue)-1);
pValue2[strlen(pValue)-1]='\0';
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