Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Probleme mit char*

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] [ 2 ] [ 3 ] [ 4 ] > 5 < [ 6 ]
040
08.09.2003, 11:08 Uhr
0xdeadbeef
Gott
(Operator)


Wie gesagt, ich kann deinen Fehler nicht nachvollziehen.

Was das Mitgeben der Länge angeht - in den meisten Fällen handelt es sich dann um Buffer, in die die Funktion schreiben soll. Das macht man, um Segfaults zu vermeiden, siehe z.B. fgets. In selteneren Fällen kann es aus Performancegründen sinnvoll sein, die Länge mitzugeben, z.B.

C++:
char letztes_zeichen(char *s, int len) { return s[len - 1]; }


...oder halt bei Arrays, die nicht null-terminiert sind:

C++:
int find_max(int arr[], int len) {
  int r = arr[0], i;
  for(i = 1; i < len; ++i) {
    if(arr[i] > r) r = arr[i];
  }
  return r;
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
041
08.09.2003, 11:13 Uhr
Pablo
Supertux
(Operator)


Ich hab gestern eine Testdatei gemacht und sie hat funktoniert. Ich weiß nicht, wieso ich in meinem Programm das Problem hatte, das ist mir auch ein Rätsel, denn ich bin sicher, dass strlen irgendwie wie meine Funktion aussieht, aber naja, manchmal tut man ja Fehler und man merkt nicht, dass sie Fehler sind.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
042
08.09.2003, 14:07 Uhr
~Anfänger00
Gast


Ein winziges Problemchen hätt ich noch:

C++:
array[0]="0";
array[1]="0";
array[2]="0";
.
.
.


Gibt es da auch eine elegantere Möglichkeit ein array zu Nullen?
(außer mit einer schleife)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
043
08.09.2003, 14:13 Uhr
0xdeadbeef
Gott
(Operator)


Ich nehme an, du willst eher sowas:

C++:
char array[100][7] = { "", "", "", "", "", "", "" };


Mit diesem Beispiel forderst du Speicher für 7 Strings a 99 Zeichen + 0 am Ende an. Übrigens ist "0" != "\0".
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
044
08.09.2003, 14:17 Uhr
Pablo
Supertux
(Operator)


for-Schleife? Wenn du weißt, wie viele Elemente, dann


C++:
for(i=0; i< ???; ++i)
    array[i] = ???;




Ist das äquivalent?

C++:
char c = 0;
char c = '\0';


--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
045
08.09.2003, 14:18 Uhr
virtual
Sexiest Bit alive
(Operator)


Na dann doch gleich:

C++:
char array[100][7] = { };


Oder alternativ

C++:
char array[100][7];
memset(array, 0, sizeof(array));


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
046
08.09.2003, 14:19 Uhr
virtual
Sexiest Bit alive
(Operator)


@pablo
Ja, ist äquivalent.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
047
08.09.2003, 14:42 Uhr
RHBaum




Zitat:

Gibt es da auch eine elegantere Möglichkeit ein array zu Nullen?


1.
Wenns um geschwindigkeit geht :
memcpy , der speicherbereich eines Arrays ist immer zusammenhaengend !
aber sehr schlechter stil !
2.
eine nummer besser, Array gleich beim initialisieren "befuellen" ... so wie 0xdeadbeef vorschlaegt !
3.
von der eleganz her total ungeschlagen ... und da es hier um "Klassen" geht: Diesen <zensiert> von C-Funktionalitaet in C++ ganz lassen und statt dessen std::vector und std::string verwenden !!!

Ciao ...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
048
08.09.2003, 14:46 Uhr
0xdeadbeef
Gott
(Operator)


Schließe mich virtual an. Aber wie du siehst, führen da viele Wege nach Rom.

@RHBaum: Was ist an performantem Code schlechter Stil?
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
049
08.09.2003, 15:12 Uhr
virtual
Sexiest Bit alive
(Operator)


@beefy
Es wäre nicht das erste Mal, wenn zugunsten von "Optimierungen" und Performanceverbesserungen die Lesbarkeit des Codes und damit der Stil leidet.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] [ 2 ] [ 3 ] [ 4 ] > 5 < [ 6 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: