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?
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
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
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...
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);
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...
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);
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)
28. oktober 2004 - 11:58
#7
ja det brude det
28. oktober 2004 - 12:00
#8
Ligger du et svar? Jeg skal måske nævne at pValue er en pointer?!
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
28. oktober 2004 - 12:35
#10
så du skal faktisk: strncpy(pValue2,pValue,strlen(pValue)-1); pValue2[strlen(pValue)-1]='\0';
Kurser inden for grundlæggende programmering