Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » char=ein buchstabe?

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 ]
020
24.07.2003, 18:20 Uhr
ao

(Operator)



Zitat:
kronos postete
[quote]ao posteteWenn du Pech hast, hast du irgendwelche Daten überschrieben und merkst das (vielleicht) erst viel später an einer ganz anderen Stelle.

jo, damit wurde ich des öfteren konfrontiert, aber nur in der form, dass irgendwelche zeichenfolgen überlappen. wenn ich nur einen string auf den speicher loslasse gibt's wirklich nie probleme... vielleicht deichselt ja das mein copiler irgendwie? (lcc32)[/quote]
Da haben wirs doch schon, zufällig überschriebene Daten. Wie löst du so ein Problem denn typischerweise? Den lcc kenne ich nur dem Namen nach.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
021
24.07.2003, 18:50 Uhr
Spacelord
Hoffnungsloser Fall


Nur der Vollständigkeit halber,ne kleine Funktion die die Zeichenkette massgeschneifert einliest.


C++:
char* einlesen()
{
    char buffer[1024];
    cin >>buffer;
    char* rueck= new char[strlen(buffer)+1];
    strcpy(rueck,buffer);

    return rueck;
}



hiermit könnte man arbeiten wie kronos es mit cin macht

@kronos:
Deine Argumentation hat überhaupt keine Grundlage!Auf gut Glück blind in irgendwelche Speicherbereiche zu schreiben dürfte in 95% der Fälle zu einer abrupten Terminierung des Programms führen.In diesem Zusammenhang von unsauberen Stil zu sprechen wäre noch untertrieben.


MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
022
24.07.2003, 19:04 Uhr
kronos
Quotenfisch
(Operator)



Zitat:
ao posteteDa haben wirs doch schon, zufällig überschriebene Daten. Wie löst du so ein Problem denn typischerweise? Den lcc kenne ich nur dem Namen nach.

inwzischen verwende ich selbstverständlich arrays mit definierter größe oder (GC_)malloc. aber wenn ich kleine testprogramme schreibe z.B. um eine funktion zu test, mach' ich's oft mal so wie oben beschrieben und es hat immer funktioniert...


Zitat:
Auf gut Glück blind in irgendwelche Speicherbereiche zu schreiben dürfte in 95% der Fälle zu einer abrupten Terminierung des Programms führen

dann bin ich aber echt ein glückspilz
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
023
25.07.2003, 09:49 Uhr
0xdeadbeef
Gott
(Operator)


@Spacelord: Wenn schon C++, dann richtig:

C++:
#include <iostream>
#include <string>

int main() {
    std::string str;
    std::cin >> str;
}


wenn du unbedingt ein char-array haben willst, nimmste halt

C++:
str.c_str();


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
024
25.07.2003, 17:28 Uhr
Spacelord
Hoffnungsloser Fall


@0xdeadbeef:
Hier ging es nunmal um char* und nicht um strings!!

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
025
25.07.2003, 17:37 Uhr
typecast
aka loddab
(Operator)


Ja aber 0xdeadbeef meint, wenn du schon cin benutzt, dann kannst du gleich die Klasse string benutzten, denn

Zitat:
0xdeadbeef postete
Wenn schon C++, dann richtig

--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)

Dieser Post wurde am 25.07.2003 um 17:38 Uhr von Loddab editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
026
25.07.2003, 18:27 Uhr
Spacelord
Hoffnungsloser Fall


Natürlich ist die Klasse string erste Wahl bei sowas!
So manchen würde es aber gut tun sich mal mit char* zu beschäftigen .
Ist meiner Meinung nach ne Grundlage die man verstehen sollte .

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
027
25.07.2003, 19:37 Uhr
0xdeadbeef
Gott
(Operator)


:ironier:
Ja, klar. Und wer C programmiert, sollte sich auch mit Assembler auskennen.

Du hast irgendwie schon recht, pointer sollte man schon verstehen, aber nachher im wirklichen Leben wäre es ziemlich bescheuert, sich mit Speichermanagement rumzuärgern.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
028
25.07.2003, 20:12 Uhr
Spacelord
Hoffnungsloser Fall


Ein bisschen Assembler hat auch noch keinem geschadet !

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
029
26.07.2003, 00:55 Uhr
0xdeadbeef
Gott
(Operator)


...mal abgesehen von denen, die in der Zeit was Vernünftiges hätten hinkriegen sollen...
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
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: