Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   C++ Anzahl Strings in C zählen? (https://www.delphipraxis.net/156509-anzahl-strings-c-zaehlen.html)

OrNEC 4. Dez 2010 18:09


Anzahl Strings in C zählen?
 
Hallo,

brauche einen Tipp wie man folgende Strings zählen kann.

Code:
char *word_list[]={"Vorname", "Nachname", NULL}; //Hier können auch viel mehr Strings stehen
Soll ich die Kommas zählen und daraus auf die Anzahl der Strings kommen oder gibt's da ne extra Funktion die das macht?

Danke!

himitsu 4. Dez 2010 18:14

AW: Anzahl Strings in C zählen?
 
Vergiß nicht, daß auch mal ein Komma in einem String vorkommen kann, dann bringt das Zählen nicht viel.
Code:
"Vorname", "Nachname", NULL, "text mit , drinnen", 132
Du könntest die TStringList nutzen ... mit StrictDelimiter oder so, da diese ja auch das " beachten könnte.


Ansonsten mußt du dir einen Parser basteln,
welcher von vorne durchgeht und davei
Delphi-Quellcode:
"
, , und besser auch noch
Delphi-Quellcode:
\"
und
Delphi-Quellcode:
\\
beachtet.
Und dann eben nurn noch außerhalb der Zeichenketten die , zählt.

(das
Delphi-Quellcode:
Anzahl = Kommaanzahl + 1
ist dir ja bestimmt schon bekannt)

OrNEC 4. Dez 2010 18:16

AW: Anzahl Strings in C zählen?
 
Und irgendwelche Standardfunktion in der <string.h> gibt's nicht? Muss ich das also per Hand machen?

himitsu 4. Dez 2010 18:19

AW: Anzahl Strings in C zählen?
 
also ... soll das jetzt in einem C-Programm gezählt werden oder nur mit einem Delphi-Programm in diesem C-Code? :gruebel:

Und wenn in einem C-Programm ... ist dieses mit eincompiliert und gibt es da nicht auch sowas wie Delphi-Referenz durchsuchenLength?

OrNEC 4. Dez 2010 18:32

AW: Anzahl Strings in C zählen?
 
Ne das hat mit Delphi nix zu tun. Ich muss einfach nur in C zählen wie viel Strings da drin sind und fertig!

mkinzler 4. Dez 2010 18:41

AW: Anzahl Strings in C zählen?
 
Dann ermitlle doch die Anzahl der Einträge in dem Array

himitsu 4. Dez 2010 18:47

AW: Anzahl Strings in C zählen?
 
Zitat:

Zitat von OrNEC (Beitrag 1066192)
Ne das hat mit Delphi nix zu tun. Ich muss einfach nur in C zählen wie viel Strings da drin sind und fertig!

Das hättest du beim Erstellen auch mit angeben können.
In 'nem Delphi-Forum denkt man natürlich zuerst an Delphi. :wink:
PS: Dafür gab es das "Präfix" vor der Überschrift.

mkinzler 4. Dez 2010 18:59

AW: Anzahl Strings in C zählen?
 
Zitat:

PS: Dafür gab es das "Präfix" vor der Überschrift.
Gibt es immer noch. Hab es gesetzt.

OrNEC 4. Dez 2010 19:22

AW: Anzahl Strings in C zählen?
 
Zitat:

Zitat von mkinzler (Beitrag 1066196)
Dann ermitlle doch die Anzahl der Einträge in dem Array

Boh... genau :thumb:

Assarbad 4. Dez 2010 20:11

AW: Anzahl Strings in C zählen?
 
Eine Methode ist:

Code:
sizeof(word_list)/sizeof(word_list[0])
... dann haste aber den Eintrag mit dem NULL auch dabei.

ErazerZ 5. Dez 2010 00:22

AW: Anzahl Strings in C zählen?
 
Code:
for ( int n = 0; n < sizeof(words) / sizeof(words[0]); n++ ){
bzw. ARRAYSIZE macro macht das gleiche:
for ( int n = 0; n < ARRAYSIZE(words); n++ ) {
oder du machst nen zähler der solang hochzählt bis words wahr ist:
Code:
int n = 0;
while ( words[n] ) { n++;

Assarbad 5. Dez 2010 00:52

AW: Anzahl Strings in C zählen?
 
Zitat:

Zitat von ErazerZ (Beitrag 1066259)
Code:
for ( int n = 0; n < sizeof(words) / sizeof(words[0]); n++ ){
bzw. ARRAYSIZE macro macht das gleiche:
for ( int n = 0; n < ARRAYSIZE(words); n++ ) {

Jupp, das hat mich jetzt noch auf was anderes gebracht. Es gibt vielfach auch ein countof() Makro, welches als Gegenpart zu sizeof() gedacht ist. Wenn ich mich recht entsinne ist das sogar in irgendeinem Standard vorgeschlagen worden.

Zitat:

Zitat von ErazerZ (Beitrag 1066259)
oder du machst nen zähler der solang hochzählt bis words wahr ist:
Code:
int n = 0;
while ( words[n] ) { n++;

unwahr ... ist aber gewagt wenn jemand mal das NULL vergißt ;)

ErazerZ 5. Dez 2010 20:16

AW: Anzahl Strings in C zählen?
 
Zitat:

Zitat von Assarbad (Beitrag 1066261)
Zitat:

Zitat von ErazerZ (Beitrag 1066259)
Code:
for ( int n = 0; n < sizeof(words) / sizeof(words[0]); n++ ){
bzw. ARRAYSIZE macro macht das gleiche:
for ( int n = 0; n < ARRAYSIZE(words); n++ ) {

Jupp, das hat mich jetzt noch auf was anderes gebracht. Es gibt vielfach auch ein countof() Makro, welches als Gegenpart zu sizeof() gedacht ist. Wenn ich mich recht entsinne ist das sogar in irgendeinem Standard vorgeschlagen worden.

Zitat:

Zitat von ErazerZ (Beitrag 1066259)
oder du machst nen zähler der solang hochzählt bis words wahr ist:
Code:
int n = 0;
while ( words[n] ) { n++;

unwahr ... ist aber gewagt wenn jemand mal das NULL vergißt ;)


ja ich meinte solange es wahr ist zählen, wenns unwahr ist abbrechen :D
und gewagt, naja, wenn ers selber entwickelt die listen? ist ja dann egal

pixfreak 6. Dez 2010 07:05

AW: Anzahl Strings in C zählen?
 
Moin zusammen,

ich würde die Daten so auch nicht speichern, ausser ich hab z. B. eine fixe Fehlerliste mit einer am besten als Konstanten gespeicherten Anzahl, und es kann nicht passieren, dass ich auf ein Element zugreife, was garnicht existiert. Ansonsten wäre ja auch ein word_list[11] ein "gültiger" Zugriff :!:

Und bitte nur lesend, nicht schreibend auf die word_list zugreifen, sonst kann es auch unangenehm werden, wenn der neue String länger als der Alte ist... :!:

Bei
Code:
sizeof(word_list) / sizeof(word_list[0]) oder
sizeof(word_list) / sizeof(char *)
brauche ich im Array keinen NULL Kenner, um das Ende aufzuzeigen. Allerdings bekomme ich bei
Code:
char *word_list[] = {}
auch immer eins als Anzahl....

Wenn ich es genau und immer sicher wissen will und es gibt NULL, dann ist das durchiterieren auch ne Moglichkeit, aber wehe das NULL fehlt:-D

Also ich würde um es wirklich sicher zu bekommen auf eine TStringList ausweichen bzw. in C++ einen vector oder einen ähnlichen Container nehmen.


VG Pixfreak


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz