Array length ...

19/06/2009 - 14:21 von Robert Hartmann | Report spam
Hallo zusammen,

Wenn ich ein Array direkt anlege,
dann weiß ich die Größe und könnte
sie zusàtzlich berechnen:

int main(int argc, char** argv){
char i[20];
size_t size = sizeof(i)/sizeof(i[0]);
return 0;
}

Wenn ich ein Array an eine Funktion übergebe,
kann ich die Größe als Parameter mit übergeben:

void bla(char* Array, size_t size)
{
for (size_t i=0; i <size; i++)
{
... mach irgendwas mit Array[i] ...
}
}

int main(int argc, char** argv){
char i[20];
bla(i, sizeof(i)/sizeof(i[0]));
return 0;
}


Was aber kann ich machen, wenn ich weiß,
dass eine Funktion ein Array zurückliefert
(was die Funktion zurückliefert ist ja ein Pointer),
dieses Array aber nicht mit einem speziellen
Zeichen terminiert wird?

Gabe es ein fest definiertes TERMINALZEICHEN
so wàre möglich

size_t getSize(char* Array)
{
size_t i=0;
for(i=0; Array[i] != TERMINALZEICHEN; i++);
return i;
}


Gibt es wirklich keine Chance, das Ende eines
übergebenen allgemeinen Arrays festzustellen?

Beste Grüße,
Robert

P.S. Vielleicht sollte man zur Datenübermittlung
sowas nutzen?

typedef struct CharArray{
size_t size;
char data[];
} charArray;


nur eben für jeden Datentypen ...
 

Lesen sie die antworten

#1 Alexander Bartolich
19/06/2009 - 14:30 | Warnen spam
Robert Hartmann schrieb:
[...]
Gibt es wirklich keine Chance, das Ende eines
übergebenen allgemeinen Arrays festzustellen?



http://c-faq.com/decl/extarraysize.html

seq 0 1 99 | xargs -I. echo 'Romani Ite Domum!'

Ähnliche fragen