Toon posts:

[c++] lengte char array opvragen in functie

Pagina: 1
Acties:

Verwijderd

Topicstarter
in een bestand maak ik een char buffer aan
char waarde[20];

nu roep ik een procedure aan waar ik deze waarde meegeef
procedure(waarde);

nu wil ik in deze procedure weten hoeveel tekens ik in deze waarde mag plaatsen dus:

int procedure(char *waarde)
{
printf("lengte: %d", strlen(waarde));
}

natuurlijk is het niet strlen(waarde) want dan krijg je nu 0, dat weet ik maar weet iemand wel een manier?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

kan in principe niet, of je moet gebruik maken van macro's of templates (templates zijn natuurlijk mooier)

macro voorbeeld:
C++:
1
2
3
4
5
6
7
8
9
10
11
void procedure (char * x, int size)
{
}

#define procedure(x) procedure (x, sizeof (x))

int main ()
{
    char str[20];
    procedure (str);
}


Zorg wel dat als de macro naam dezelfde is als je functienaam de macro na de functie gedefinieerd moet worden

Template voorbeeld (stuk mooier)
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void procedure (char * x, int size)
{
}

template <int S> void procedure (char (&x)[S])
{
    procedure (x, S);
}

int main ()
{
    char s[20];
    procedure (s);
}


PS. ik maak hier expres een wrapper functie, dit voorkomt dat er een nieuwe functie wordt gecompiled voor elke verschillende grootte van char arrays die in je programma voorkomen

Geinspireerd door [rml][ C++] Sizeof template arrays[/rml] :P

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
dank je .oisyn , hier kan ik mee vooruit

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

offtopic:
Dan had je m'n naam er ook wel bij mogen zetten O+


Ennuh voor depedro: dat topic is een paar dagen oud, je had wel iets meer mogen zoeken :)

Professionele website nodig?