char variablen
-
@winexec* char *a[]? ist ein Array aus Zeigern auf char
sowas meintest Du aber nicht!
-
Hallo,
Meinen tue ich es schon. Ich war nicht sicher wie er es meinte, also hab ich einmal diese Möglichkeit genommen
.MFG winexec*
-
hi.
ich kann mir zwar denken, wozu die einzelnen befehle sind. Aber fände ich es doch cool, wenn du das ganze mit komentaren machen würdest. damit ich auch mir nichts falsches beibringe

aber danke für die schnelle antwort. genau so wollte ich das. sorry, wenn ich es etwas scheiße beschrieben habe.
-
Hallo,
#include <iostream> #include <string> //für size und string using namespace std; int main(){ string a; cin >> a; //für die Größe; size_t size = a.size(); //size von a bestimmen char *b; b = new char[size]; //zeiger zeigt auf die speicheradresse von size-vielen chars int i = 0; for(; i < size; i++){ b[i] = a[i]; //stringinhalt wird kopiert } b[size] = '\0'; //hänge ein 0-Zeichen an }Warum eigentlich so umständlich. Nutze doch string.
MFG winexec*
-
Das ist auch reichlich umständlich und zudem noch falsch.
Das hierb = new char[size - 1];sollte wohl eher so heissen
b = new char[size + 1];Warum eigentlich nicht strncpy?
Der Rat, nur string zu benutzen, ist aber der besser.
-
wieso unbedingt char?
string geht wohl nicht?oder zumindest:
string text; cin>>text; wasauchimmergemachtodergebrauchtwird = text.c_str();
-
Hallo,
Ich habe nicht an das 0-Zeichen gedacht.
#include <iostream> #include <string> //für size und string using namespace std; int main(){ string a; cin >> a; //für die Größe; size_t size = a.size(); //size von a bestimmen cout << size; char *b; b = new char[size]; //zeiger zeigt auf die speicheradresse von size-vielen chars int i = 0; for(; i < size; i++){ b[i] = a[i]; //stringinhalt wird kopiert } b[size] = '\0'; //hänge ein 0-Zeichen an }MFG winexec*
-
Wie ser1al schon zeigte:#include <string>
using namespace std;int main(){
char* textPtr;
string text;
cin >> text;textPtr = text.c_str();
}
[cpp]
Kopieren braucht man nicht, man hat ja jetzt einen Zeiger auf das nullterminierte char-Array.
mfg
-
winexec* schrieb:
Hallo,
Ich habe nicht an das 0-Zeichen gedacht.
Dann denk doch endlich mal daran
Dein Code benötigt ein "b=new char[size**+1**];", sonst bekommst du Zugriffsprobleme (string zählt das '\0' nicht mit).
-
Hallo,
Sehe ich das falsch oder reserviere ich mit new char[size] nicht schon size + 1 Elemente
?MFG winexec*
-
Das siehst Du falsch.
-
Hallo,
Ich glaub ich muss mich mal ausschlafen gehen:
Eingabe: hallo(5)
new:ptr = new char[5] { 0,1,2,3,4,5 } (6)
ptr[5](6)
MFG winexec*
-
du hast die nullterminierung vergessen, die braucht auch noch platz (1) \0
-
char a[5]-->a[0];a[1];a[2];a[3];a[4]
oder nicht?
und a[4] geht für \0 drauf.
also hat man noch 4 stellen frei.wenn man 6 Stellen haben will muss man char a[7] machen. da a[6] für \0 drauf geht.
-
ja also brauch man für das wort h[0]a[1]l[2]l[3]o[4]\0[5] eine größe von 6

-
richtig
