Fehler beim zuweisen durch cin

Hi,

ich habe ein Problem und zwar bekomme ich einen Segmentation Fault, wenn ich versuche sname etwas zuzuweisen. Leider weiss ich nicht woran dies liegt.

Wenn ich allerdings string name auskommentiere, dann geht es. Warum?

Ich hoffe es kann mir jemand weiterhelfen.
Danke schonmal im vorraus.

Code:
#include <iostream>
#include <fstream>

using namespace std;

int main(void){
	
	int debug = 1;
	char* sname;
	
	//string name;
	
	//cin >> name;
	cout << "Please enter the name of the source file: ";
	cin >> sname;
	
	if(debug) cout << "file name entered: " << sname << endl;
	
	return 0;
}
 
Hi,

dein sname ist nur ein Pointer der ins Nirvana zeigt, da du keinen Speicher dafür reserviert hast. Machs doch einfach so:
Code:
char sname[15]; //oder andere größe
oder benutz gleich string

odigo
 
Original von odigo
Hi,

dein sname ist nur ein Pointer der ins Nirvana zeigt, da du keinen Speicher dafür reserviert hast. Machs doch einfach so:
Code:
char sname[15]; //oder andere größe
oder benutz gleich string

odigo
ja, aber so habe ich doch ein vorgegeben groesse, die ich einhalten muss, oder?
sorry, ich bin neu in c++, habe vorher fast nur java gemacht.
 
Original von Tybalt0125
ja, aber so habe ich doch ein vorgegeben groesse, die ich einhalten muss, oder?

Ja, da führt imo auch kein weg dran vorbei, bei dieser Methode. Benutz doch einfach die Stringklasse.
Würde dann so ausschauen:
Code:
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main(void){
	
	int debug = 1;
	string sname;

	cout << "Please enter the name of the source file: ";
	cin >> sname;
	
	if(debug) cout << "file name entered: " << sname << endl;
	
	return 0;
}

Wenn du mit C/C++ arbeiten willst, schau dir die Pointerlogik/aritmethik nochmal genau an, sonst wirst du nicht viel Freude haben.

odigo
 
Hab ich mir schon gedacht, das ich mir das nochmal anschauen muss.
Danke fuer Deine Hilfe.

Kannst Du mir vielleicht auch noch einen link geben, wo das verstaendlich erklaert ist?
Waere nett...
 
Zurück
Oben