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 ]
030
07.09.2003, 15:20 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@beefy
ich glaub das geht tatsächlich
irgendwie hatte ich das auch schon mal geschaft. ich glaub das war in ner for-schleife wenn ich nicht nach int gecastet habe. Mit vc++ liefs. Mit irgend so einem scheiss alten compiler auf solaris ist der immer abgekackt. Hab ewig gebraucht um den Fehler zu finden. Das war aber noch in meinen totalen blutigen Anfängertagen, wo ich warnings noch überhaupt keine beachtung geschenkt habe
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
031
07.09.2003, 15:56 Uhr
Anfänger00



@beefy:

C++:
longdez longdez::operator=(char* Ztext)
{
int x = 31;
for(int i=strlen(Ztext);i>=0;i--)
{
this->Ziffer[x] = Ztext[ i ];
x--;
}
strcpy(Ausgabe,this->Ziffer);
};


so habs ich zum abschmieren gebracht..

Dieser Post wurde am 07.09.2003 um 15:57 Uhr von Anfänger00 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
032
07.09.2003, 16:02 Uhr
Pablo
Supertux
(Operator)


Also, mir ist schon passiert, dass wenn const char* übernehme, strlen nicht mehr funktioniert. Bei mir ist es jedenfalls so gewesen, als wäre strlen eine Endlos Schleife.


C++:
void k()
{
    char* x = "Hallo";
    f(x);
}

void f(const char* sbuffer)
{
    int l = strlen(sbuffer);
}



Mir ist passiert, dass das Programm nicht mehr tut, wenn f(x) augerufen wird, ich löse so das Problem:

C++:
void k()
{
    char* x = "Hallo";
    f(x,strlen(x));
}

void f(const char* sbuffer, int length)
{
    int l = length;
}


--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
033
07.09.2003, 16:12 Uhr
0xdeadbeef
Gott
(Operator)


@Pablo: Dein Code wird im Zweifel eher nicht funzen, weil f() in k() noch nicht deklariert ist und der Compiler deswegen annimmt, dass sie einen int zurückgibt.

@Anfänger00: Du schreibst ja nur hinten in den Buffer, als in den Bereich von Ziffer[30 - strlen(x)] bis Ziffer[31]. Für mich hat dieser Code funktioniert:

C++:
#include <stdio.h>
#include <stdlib.h>

char ziffer[32];

void assign_ziffer(char *zahl) {
  int i, x;
  for(x = 31, i = strlen(zahl); i >= 0; --i,--x) {
    ziffer[x] = zahl[i];
  }
  while(x >= 0) {
    ziffer[x] = '0';
    --x;
  }
}

main() {
  assign_ziffer("123456789");
  printf("%s\n", ziffer);
}


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


@beefy, nein, nein. Ich bin davon ausgegangen, dass es schon Prototypen gibt usw. also sind dem Cinpiler und Linker nicht unbekannt. Oder liegte es vielleicht an dem const?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
035
07.09.2003, 16:26 Uhr
~Anfänger00
Gast


Ok,kann sein aber ich werde jetzt nichts mehr umschreiben,mystrlen geht,also
is gut.
Nur in meiner Klasse funktioniert was,was eigentlich nicht funktionieren dürfte:
ich hab eine void Methode mit zwei Parametern:
Der erste ist einfach nur ein char-string und soll nicht veränder werden.
Der zweite ist ein char array und soll verändert werden.
Aber das funktioniert,obwohl es sich um eine void Methode handelt,die ja nichts zurückliefert.
Kann das vielleicht auch an this->2.Parameter liegen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
036
07.09.2003, 16:29 Uhr
0xdeadbeef
Gott
(Operator)


Nein. Ich kann sowieso nicht nachvollziehen, was das Problem ist. Bei mir läuft der Code

C++:
#include <stdio.h>
#include <stdlib.h>

int f(const char* sbuffer) {
    int l = strlen(sbuffer);
    return l;
}

main() {
    char* x = "Hallo";
    printf("%d\n", f(x));
}


ohne Probleme.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
037
07.09.2003, 16:30 Uhr
Anfänger00



Mist war schon wieder nicht eingelogt!
Also der zweite Parameter is jetzt nicht in der deklaration mit this->
sonder beim Aufruf also: (nutzung_meiner_methode(parameter_1,this->variable_aus_protected)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
038
07.09.2003, 18:40 Uhr
Anfänger00



Hat sich ergeben
ich kann jetzt auch schon addieren!
(edit: Das kann ich auch schon seit der ersten Klasse
Aber ich kann das jetzt mit meinem "datentyp" )
Also nochmal für eure Hilfe!

Dieser Post wurde am 07.09.2003 um 19:36 Uhr von Anfänger00 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
039
07.09.2003, 19:09 Uhr
Pablo
Supertux
(Operator)



Zitat:
~Anfänger00 postete
Ok,kann sein aber ich werde jetzt nichts mehr umschreiben,mystrlen geht,also
is gut.
Nur in meiner Klasse funktioniert was,was eigentlich nicht funktionieren dürfte:
ich hab eine void Methode mit zwei Parametern:
Der erste ist einfach nur ein char-string und soll nicht veränder werden.
Der zweite ist ein char array und soll verändert werden.
Aber das funktioniert,obwohl es sich um eine void Methode handelt,die ja nichts zurückliefert.
Kann das vielleicht auch an this->2.Parameter liegen?


Vielleicht wäre es besser, wenn du das zweite Parameter, das geändert werden muss, als Referenz übergeben wird.

@beefy: Das hab ich auch gemeint (gut, das war nur C Code) und in C habe ich schon mehrmals gesehen, dass Funktionen auch die Länge der Arrays und Strings in den Parametern enthalten sind. Ich hab auch nicht als char* sondern als char[MAX_LENGTH] deklariert und mit strcpy initialisiert und dann hab ich die Funktion aufgerufen. Wenn die Funktion von alleine strlen aufruft, dann terminiert das Programm nicht, und das finde ich schon komisch.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 07.09.2003 um 19:12 Uhr von Pablo Yanez Trujillo editiert.
 
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: