Avatar billede trp79 Nybegynder
06. oktober 2002 - 11:31 Der er 6 kommentarer og
2 løsninger

String (erklæring)

Hvordan erklærer man en string i c? Altså:
"%d" hører til int
"%f" hører til float
men hvad hører "%s" til?

Hvis du kan besvarer dette spørgsmål, har du måske også et par ideer til det spørgsmål jeg har oprettet der hedder "typecasting"
Avatar billede erikjacobsen Ekspert
06. oktober 2002 - 11:36 #1
Fx:

  int i;
  char *hw = "Hello world";
  for (i=0;i<10;i++) {
    printf("%s %d\n",hw,i);
  }
Avatar billede kamikaze Nybegynder
07. oktober 2002 - 09:16 #2
erikjacobsen >> ovenstående bør ikke virke, da char *hw er en pointer der peger "ingen-steder-hen" :o)

Der mangler:
char *hw = new char[64];
strcpy(hw, "Hello, world!");

eller
char hw[64] = "Hello world";

eller
char hw[] = "Hello, world";
Avatar billede erikjacobsen Ekspert
07. oktober 2002 - 10:18 #3
Hvorfor mener du den ikke peger nogen steder hen? Har du prøvet?
Avatar billede soepro Nybegynder
07. oktober 2002 - 10:20 #4
Som jeg svarede på dit andet spørgsmål under http://www.eksperten.dk/spm/265997 erklæres en "streng" sådan her i standard C:

char streng[25];
int  q;

scanf("%.25s", streng);
scanf("%d", q);

Du kan i det fleste C++ versioner anvende en Standard Library klasse der hedder String også:

String streng;

Kig i on-line hjælpen for at se hvilke ekstra funktioner du så får. Du kan "caste" (det er IKKE er rigtig cast) mellem de to type vha. c_str() member funktionen:

char  charStregn[25];
String cppStreng;

strncpy(charStreng, cppStreng.c_str(), sizeof(charStreng)-1);
printf("%s", cppStreng.c_str());

cppStreng = charStreng;
cout << cppStreng << endl;
Avatar billede soepro Nybegynder
07. oktober 2002 - 10:22 #5
kamikaze >> Hvad er det for noget vrøvl ? hw er da en char pointer der bliver sat til at pege på den literal der indeholder "Hello World" !
Avatar billede kamikaze Nybegynder
07. oktober 2002 - 11:01 #6
Sorry, ja det er da noget vrøvl. Jeg tager mine ord i mig igen!!! (Det gik vist lidt for hurtigt)
Avatar billede erikjacobsen Ekspert
07. oktober 2002 - 11:35 #7
Fint nok - men det er noget "fusk" alligevel at gøre det som jeg
skriver, for "Hello world" kommer så (typisk) til at ligge i et
skrivebeskyttet område.
Avatar billede soepro Nybegynder
07. oktober 2002 - 15:30 #8
erik >> Da kun såfremt det ikke er en statisk variabel ! Men du har vel ret derhen at du så burde have skrevet:

const char* hw = "Hello World";

Det vil så give compileringsfejl, hvis man anvender hw som parameter til en funktion der kunne finde på at ændre i enten indhold eller pointer.
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