Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » char im array verändern -> peinlich

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 <
000
04.11.2006, 22:24 Uhr
~grimmel
Gast


Hallo,

ich verstehe folgendes triviale problem einfach nicht:

ich habe einen pointer auf ein char array welches nur mit 0 und 1 gefüllt ist. Jetzt will ich nur
eine einzige stelle verändern im array - abe ich bekomme einen segfault:

C++:
flags = static_cast<char*>(alloca(rows));
...
class::method(char* flags, const int a)
{
  
    flags[a] = 1;
}



es funktioniert einwandfrei wenn ich über jedes element drüberiteriere und
jedes andere element mit 0 setze - aber nur eine einzige stelle verändern geht nicht?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
05.11.2006, 16:18 Uhr
stephanw
localhorst


Zeig mal mehr Quellcode. C oder C++ ? In C++ z.B. ist

C++:
char* c = "harry";
// eigentlich
const char* c = "harry";

, d.h. Du kannst diesen String nicht mehr ändern.
--
Reden ist Schweigen und Silber ist Gold.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
06.11.2006, 11:56 Uhr
RHBaum




Zitat:

jedes andere element mit 0 setze - aber nur eine einzige stelle verändern geht nicht?



nein ....
aber was geht, das ganze array mit einem mal auf 0 setzen und den einen wert nachtraeglich auf 1 korrigieren ...

statisches beispiel:

C++:
char flags[255];
memset(flags,0,255);
flags[7] = 1;


Ich hoffe du tust das ganze nur wegens dem ueben mit arrays ! ^^
Unter c++ ist das eher schlecht was du tust, schon im ansatz ...
flags = bool felder -> entweder in integer convertieren oder gleich std::bitset verwenden. Das ist um laengen komfortabler ... std::vector<bool> mag unter unstaenden auch ne alternative sein ....

Ciao ...


Bearbeitung von Windalf:

Post fixed...


Dieser Post wurde am 06.11.2006 um 12:05 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
08.11.2006, 14:44 Uhr
stephanw
localhorst



Zitat von grimmel:
es funktioniert einwandfrei wenn ich über jedes element drüberiteriere und jedes andere element mit 0 setze - aber nur eine einzige stelle verändern geht nicht?



Zitat von RHBaum:

nein ....
aber was geht, das ganze array mit einem mal auf 0 setzen und den einen wert nachtraeglich auf 1 korrigieren ...



@RH Was das "nein..." als Antwort auf die von mir nochmal als Zitat eingefügte Frage gemeint ? Wieso ist das klar, dass man zwar über das Feld iterieren und _jedes_ Element setzen kann, aber nicht nur _eines_ ?

Wahrscheinlich verstehe ich das nicht, weil ich schon die Frage mit dem Quellcode nicht verstehe :-(
--
Reden ist Schweigen und Silber ist Gold.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ 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: