Avatar billede thomasll Nybegynder
10. februar 2004 - 11:09 Der er 5 kommentarer og
1 løsning

Lave tal om til String i C?

Hej!

Vi sidder lige og bøvler med en opgave hvor vi skal lægge adskillige linier sammen til en streng (inkl. Integers). Dette skal vi bruge da vi skal skrive til en log-fil vha. write(fil, streng, byte )
Avatar billede arne_v Ekspert
10. februar 2004 - 11:18 #1
Jeg tror at sprintf er det du leder efter.

Eksempel:

char buf[100];
sprintf(buf,"%s %d %s %d",str1,int1,str2,int2);
Avatar billede thomasll Nybegynder
10. februar 2004 - 11:30 #2
Takker - det virker jo fint :-)
Avatar billede arne_v Ekspert
10. februar 2004 - 11:47 #3
Så vil jeg ligge et svar
Avatar billede thomasll Nybegynder
10. februar 2004 - 11:49 #4
SÅ er det bare lige det med tildele  :-)
Avatar billede rrn Nybegynder
11. februar 2004 - 16:54 #5
Arnes svar er korrekt, men potentielt problematisk da det kan være svært at sikre sig at den buffer man har oprettet er stor nok.

Det er en bedre løsning at bruge C++'s ostrstream. F.eks.

  ostrstream os;
  os << str1 << " " << int1;
  os << ends;  // Glem ikke at afslutte strengen!
  char *str=os.str();

Herefter er str en pointer til en C-streng.
Avatar billede arne_v Ekspert
11. februar 2004 - 20:49 #6
ostrstream virker jo ikke i C (se overskrift).

Personligt foretrækker jeg sprintf fremfor ostrstream/ostringstream i C++,
fordi jeg synes at syntaxen er noget mere elegant (specielt når man skal have
bredder etc. på).

Og ofte ved man hvor meget data fylder. Hvis ikke kan man allokere dynamisk.

char *buf = new char[strlen(str1)+1+3*sizeof(int)+1+strlen(str2)+1+3*sizeof(int)+1];

bør dække.
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