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 ]
010
05.09.2003, 18:59 Uhr
~Anfänger00
Gast


Nachtrag:
Das ganze ist keine Funktion sondern eine Klasse.
Es handelt sich nicht,wie man bei dem Beispiel("100") annehmen könnte um eine Binärzahl,sondern um eine 32-stellige Zahl.Also ("9894945654") ist auch möglich.
Also das Probelm ist jetzt,das die Zahl,die man eingibt ja nicht unbedingt
32 Stellen haben muss sondern beliegbig viele stellen(1 bis 32) haben kann.
Und die Methode soll das eben berücksichtigen.
Sie soll also herausfinden wie die eingebene Zahl sozusagen verschoben werden muss.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
06.09.2003, 00:14 Uhr
Anfänger00



Danke für eure Hilfe
Das Problem konnte durch:

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


gelöst werden.
Da bleibt nur noch die zweite Frage offen:
Also gibt es jetzt einen Datenty der größer als int ist?????
--
EDIT: Funktioniert nur mit maximal 5 Stellen
Da muss irgendwas mit sizeof() schieflaufen.
Ich melde mich Morgen mal wieder..

Dieser Post wurde am 06.09.2003 um 00:26 Uhr von Anfänger00 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
06.09.2003, 00:58 Uhr
Pablo
Supertux
(Operator)


Was meinst du mit Datentyp, der größer als int?
long, double, float sind "größere" Datentypen, wenn das ist, was du meinst.

Was meinst du mi Maximal 5 Stellen? Dass sizeof(Ztext) <= 5 sein muss, damit es funktioniert?

Wie wäre es damit?

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

    strcpy(this->Ziffer, Ztext);
    strcpy(Ausgabe,this->Ziffer);
}


--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 06.09.2003 um 01:03 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
06.09.2003, 07:57 Uhr
Tommix



Hallo,
sizeof gibt Dir den Speicherbedarf des Zeigers an (4 byte). Die Stringlänge bekommst Du mit strlen(). Es gibt die Typen long int und long long int, die einen grösseren Wertebereich als int haben können, aber nicht müssen.

Gruss, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
06.09.2003, 09:49 Uhr
~Anfänger00
Gast



C++:
char x[]= "123456789";
cout<<sizeof(x)-1;


Das funktioniert,aber ?
Wenn das wircklich nicht gehen sollte muss ich,wie Tommix shon sagte,
auf strlen() ausweichen.

Also ich meinte eigentlich nicht diese typen sondern besser gefragt:kennt
ihr irgend ne site wo man die runterladen kann?(also in form von header und lib)

Mit maximal 5. Stellen meine ich:

C++:
longdez Test; //longdez = Klasse
Test = "123456789";
cout<<Test.Ausgabe;
//ergibt:00000000000000000000000000012345 |"6789" wird abgeschnitten
//slote so aussehen:00000000000000000000000123456789

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
06.09.2003, 12:16 Uhr
Pablo
Supertux
(Operator)


Das habe ich übersehen, weil ich keine For-Schleife benutzt habe. @Tommix hat Recht, für die Länge eines Strings brauchst du die Funktion strlen() (stdio.h oder stdlib.h, das bin ich mich nicht sicher, weil ich immer beide einbinde).

Ich versthe wirklich nicht, was du runterladen willst, die größere datentypen als int wie long int, usw? Wenn du das meinst, die sind scho drin.

Ich gluaube, wenn du das machen willst, was du am Schluss in C++ Code hast, musst du selber programmieren. Vielleicht gibt es schon jemanden, der das gemacht habe, ob man das vom Netz runterladen kann, weiß ich wirklich nicht. Aber das ist nicht so schwierig.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
06.09.2003, 21:21 Uhr
Anfänger00



Funktioniert auch mit strlen() nicht
Soll ich vielleicht den gesamten code mal zeigen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
06.09.2003, 21:46 Uhr
Pablo
Supertux
(Operator)


Ztext wird nie verändert

Deklariere als const char* Ztext

Es kann passieren, dass strlen nicht funktioniert (ist mir schon passiert). Was du machen kannst ist die Länge als Parameter übernehmen.

Was genau willst du machen?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
06.09.2003, 23:30 Uhr
Anfänger00



Das geht doch nicht!
Das ganze soll doch per opererator "=" übergben werden!

C++:
char x;
x= "123456789";//Wie soll ich denn da die Größe übergeben?
//mit "=" is das halt konfortabler..


Das ganze ist ja ein KLASSE und keine Struktur.Und hast ja kein Ahnung von Klassen.(Das meine ich jetzt nicht so hart wie es klingt )
Aber du sagst ja selber,das du nur in c programmierts,oder ist das doch irgendwie anders gemeint?

Ich möchte einen eigenen "Datentyp" schreiben,wenn man das überhaupt so nennen darf.

Dieser Post wurde am 06.09.2003 um 23:30 Uhr von Anfänger00 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
06.09.2003, 23:48 Uhr
Pablo
Supertux
(Operator)


Stimmt, ich hab nicht auf den Operator= aufgepasst, sorry! Dann geht nicht, was ich da erzählt hab, ist ja logisch. Und Klassen kenn ich doch, ich programmiere gerne ohne Klassen, deshalb hab ich ja den Operator= übersehen.

Wenn du hast:

C++:
char x;
x= "123456789";



Dann hast du ein "Array von char" der Länge 10 mit folgenen Elementen
'1', '2', '3', ..., '9', '\0'

Dann könntest du folgendes machen:

C++:
longdez longdez::operator=(char* Ztext)
{
    for(int i=0; Ztext[i] != '\0'; ++i)
    {
        this->Ziffer[i] = Ztext[i];
    }

    // hier eine Funktion, die ein char* invertiert

    strcpy(Ausgabe,this->Ziffer);
}



oder du machst deine eigene strlen Funktion (meiner Meinung nach sinnvoller)


C++:
int mystrlen(const char* buffer)
{
    int x=0;
    while(buffer[x] != '\0')x++;
    return x+1;
}
longdez longdez::operator=(char* Ztext)
{
    int x = 32;
    for(int i=mystrlen(Ztext); i>=0; --i)
        this->Ziffer[--x] = Ztext[ i ];

    strcpy(Ausgabe,this->Ziffer);
}



Mir fällt nix mehr ein. mystrlen läuft in O(n), und da die Zuweisung weniger 32 Zeichen hat, ist das kein Problem.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 06.09.2003 um 23:50 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: