Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » buchstaben?

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 ]
000
23.11.2003, 10:27 Uhr
andreasK



hi kann man irgendwie eine Schleife schreiben, die mir automatisch
die Buchstaben von A bis Z hochzählt, so dass ich diese ausgeben kann?

Ungefähr so

A B C D E usw?

Gruß
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
23.11.2003, 10:34 Uhr
Tommix



Hallo,

C++:
char c;
for (c = 'A'; c <= 'Z'; ++c)
  printf ("%c ", c);



Gruss, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
23.11.2003, 11:26 Uhr
andreasK



Danke funtzt so weit aber warum bekomm ich, wenn icg das so ausgebe da immer irgendwelche kryptozeichen angezeigt?


C++:
    char c;
    for (c = 'A'; c <= 'Z'; ++c)
    {
        tvinsert.item.pszText = &c;
        pTree->InsertItem(&tvinsert);
    }
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
23.11.2003, 13:15 Uhr
Pablo
Supertux
(Operator)


Ich habe eine Vermutung warum. Wieso übergibst dem Objekt tvinsert eine Referenz auf c?
C ist eine lokale Variable. Wenn das Programm die Funktion verlässt, die char c definiert hat, dann liegt c außer des Gültogkeitsbereiches und wird gelöscht. Du übergibst tvinsert aber die Adresse der Variable c, aber wenn das Programm die Funktion verlässt, dann ist diese Adresse ungültig bzw. da sind keine Daten mehr.

Ich weiß nicht wie tvinsert funktioniert bzw. was für eine Variable pszText ist, vielleicht Pointer? ch würde jedenfalls c als Pointer deklarieren und mit new initialisieren, damit sie nicht ungültig beim Verlassen der Funktion werden. Aber dann musst du nicht im Desktruktor der Klasse von tvinsert die Enträge von pszText per delete zu löschen.
Ich bin mir nicht sicher ob das hilft:

C++:
char c;
    for (c = 'A'; c <= 'Z'; ++c)
    {
        char* temp = new char[1];
        *temp = c;
        tvinsert.item.pszText = temp;
        pTree->InsertItem(&tvinsert);
    }


--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
23.11.2003, 13:38 Uhr
andreasK



Nein hab das ausprobiert funktioniert aber immer noch nicht! Die Buchstaben stimmen ja soweit nur stehen dahinter immer noch irgenwelche komischen kryptografische Buchstaben!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
23.11.2003, 13:47 Uhr
Pablo
Supertux
(Operator)


Und muss pszText unbedingt ein Pointer sein? Wenn du nur ein Zeichen speichern willst, dann nimm doch nur char als Datentyp für pszText. Dann ist das Problem erledigt. Ich meine nur, die Adresse ist ja ungültig, wenn du die Funktion verlässt, da c nur eine lokale Variable liegt und dann zeigt pszText auf die Leere.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
23.11.2003, 14:13 Uhr
Oliver
S2-Pixelgeneral


Ich versteh jetzt zwar nicht so richtig, was das mit dem item, ist aber wenn irgendwelche Mist dahinter steht, fehlt doch eigentlich immer das Nullbyte am Ende oder?
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
23.11.2003, 14:18 Uhr
Pablo
Supertux
(Operator)


Nicht umbedingt. Aber wenn pszText ein char* ist könnte das helfen, außerdem hängt meiner Meinung nach auch davon ab, wo tvinsert deklariert wurde. Ist das lokal oder global? Ich nehme an, pTree ist global und tvinsert nur lokal, d.h. das Problem würde hier ebenfalls sein, dass tvinsert-Adresse nicht mehr gültig ist, wenn man die Funktion verlässt, deshlab steht da nur Mist, wenn man das sehen, weil pTree dann nur auf ungültige Adressen zeigt. Muss InsertItem überhaupt eine Referenz bekommen, ist das Argment ein Pointer?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
23.11.2003, 14:58 Uhr
virtual
Sexiest Bit alive
(Operator)


Letztlich kann man wirklich nur raten. Ich denke aber, daß Olivr schon ziemlich nah dran liegt. Wenn es wirklich allein ein global/lokal Problem wäre, dann wäre oft das Ergebnis, daß alle Items plötzlich den gleichen Wert haben (ich vermeide hier das Wort immer, weil man immer nur wieder sagen kann, daß wir hier aufs raten angewiesen sind .

Ich denke, zunächst sollte geklärt werden, was die einzelnen Variablen vom Typ her sind, dann sollte man nachgeforscht werden, ob InsertItem nicht vielleicht automatisch Speicher für die elemente anlegt.
Rein von der Schleife her hat Tommix ja schon alles notwendige gesagt; eine Frage ist halt, wie man aus einem char einen char* macht. Da gibt es verschiedene Möglichkeiten:

C++:
char c;
char b[2] = {0, 0];
for(c='A'; c!='Z'; ++c)
{
   b[0] = c; /* b nun ein string */
}


oder

C++:
int c;
char b[2];
for(c='A'; c!='Z'; ++c)
{
    sprintf(b, "%c", c); /* b nun ein string */
}


oder

C++:
char b[2] = {0, 0];
for(*b='A'; *b!='Z'; ++(*b))
{
   /* b nun ein string */
}


usw.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 23.11.2003 um 14:58 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
23.11.2003, 15:12 Uhr
0xdeadbeef
Gott
(Operator)


Für mich sieht es auf jeden Fall so aus, als hätte Oliver recht, der Baum scheint Strings zu erwarten. Du gibst ihm aber nur eine Referenz auf einen char, das heißt, der Baum findet den Sentinel am Ende des Strings erst zufällig etwas später im Speicher. Pablo hat zwar auch recht, dass c eine lokale Variable ist, aber der Baum kopiert den String, den man ihm übergibt. Wenn er einfach den Pointer übernähme, stünde in allen Nodes das gleiche, weil der Wert von c ja in der Schleife geändert wird.

Genaueres dazu kann ich aber nicht sagen, weil ich den Typ von pTree nicht kenne.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ 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: