Avatar billede netro Nybegynder
22. maj 2005 - 18:57 Der er 13 kommentarer og
1 løsning

Lægge til char-array

Hvordan tilføjer jeg et char-array til et andet? Det første indeholder allerede noget, så det nye skal ikke overskrive, men lagres efter det eksisterende indhold.

char orginalt[1024];
char tilfoejelse[45];
Avatar billede arne_v Ekspert
22. maj 2005 - 19:01 #1
strcat
Avatar billede arne_v Ekspert
22. maj 2005 - 19:02 #2
char orginalt[1024];
char tilfoejelse[45];

strcpy(originalt,"123");
strcpy(tilfoejelse,"456");

strcat(originalt,tilfoejelse);
Avatar billede arne_v Ekspert
22. maj 2005 - 19:03 #3
Avatar billede netro Nybegynder
22. maj 2005 - 19:04 #4
strcat(originalt, tilfoejelse);

Det er ikke muligt at sige:

sprintf(originalt, "%s%s", originalt, tilfoejelse);

?
Avatar billede arne_v Ekspert
22. maj 2005 - 19:07 #5
det kan man godt - men til så simpel en operation ville jeg bruge strcat
Avatar billede netro Nybegynder
22. maj 2005 - 19:08 #6
Okay, tak skal du have.
Avatar billede arne_v Ekspert
22. maj 2005 - 19:10 #7
strcpy, strcat, strcmp, strchr, strstr er nogle af dem som man bør kende
Avatar billede arne_v Ekspert
22. maj 2005 - 19:10 #8
og et svar
Avatar billede bertelbrander Novice
22. maj 2005 - 19:58 #9
Med hensyn til sprintf, så står der i C-standarden (det samme gælder for C++):
"If copying takes place between objects that overlap, the behavior is undefined."

Så hvis man er pedantisk kan man ikke bruge sprintf. Jeg kan dog ikke se nogen grund til at det ikke skulle virke i dette tilfælde.
Avatar billede netro Nybegynder
22. maj 2005 - 20:00 #10
Jeg vælger strcat. Tak for det.
Avatar billede arne_v Ekspert
22. maj 2005 - 20:13 #11
den klausul er sikkert tiltænkt suspekt kode som:

sprintf(originalt+1, "%s%s", originalt, tilfoejelse);
Avatar billede bertelbrander Novice
22. maj 2005 - 20:20 #12
Eller kode som:
#include <stdio.h>

int main()
{
  char Ar[256] = "Hello World!";
  sprintf(Ar, "-%s\n", Ar);
  printf(Ar);
  return 0;
}

Den skriver på min maskine - eller ------------- afhængig af kompiler.
Avatar billede netro Nybegynder
22. maj 2005 - 20:24 #13
Hvad betyder tallet i sprintf? Er det pladsen, hvor de nye data starter?
Avatar billede bertelbrander Novice
22. maj 2005 - 21:07 #14
originalt + 1 er det samme som &originalt[1], dvs adressen på element 1 i originalt.
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