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
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
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