Probleme mit Pointer bei Aufruf einer char-Funktion

einszwo

Grünschnabel
Hallo,

ich bin noch Programmieranfaenger und habe eine Funktion geschrieben, die ich aufrufen moechte. Die Funktion sucht in einem Feld nach Leerzeichen und schreibt den Inhalt, der nach den Leerzeichen kommt in einen neuen string, der dann in ein char umgewandelt wird.
Code:
char FileIO::IgnoreWS(char* string) 
{	
	std::string nstring;
	int i=0;
	while(string[i] == ' ')
	{
                           i++;
	}
	nstring += string;
                     nstring=nstring.substr(i);
	const char* cstring = nstring.c_str();
	printf(cstring); //das was ich mir hier ausgebe, brauche ich in meinem Hauptprogramm!

	return *cstring;
	
}

Wenn ich die im Hauptprogramm aufrufen moechte:
Code:
char cstring[256];
cstring = IgnoreWS(line); //line ist als char line[256] definiert und enthaelt eine Zeile einer eingelesenen Textdatei

bekomme ich folgende fehlermeldung:
Code:
error C2440: '=' : cannot convert from 'char' to 'char [256]'
There are no conversions to array types, although there are conversions to references or pointers to arrays

Ich denke, es gibt Probleme, weil nur der Pointer uebergeben wird und nicht wirklich der Inhalt. Ich brauche aber den Inhalt des Feldes aus meiner Funktion im Hauptprogramm. Wie stelle ich das an?

Ich waere fuer jede Hilfe dankbar.
 
Ich schätz mal des Problem liegt darin dass der Rückgabewert bei dir char ist und wie der Compiler schon sagt dass du, des in ein char[256] feld schreiben willst.

Ich würd mal schauen ob er die ganze Zeichenkette übergibt -> für mich is char 1 Zeichen
mfg
 
Du meinst, wenn ich statt:

return *cstring;
return cstring;

schreibe?

Das will er auch nicht...
Fehler: error C2440: 'return' : cannot convert from 'const char *' to 'char'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast

Wie bekomme ich den Inhalt von cstring in meine Hauptroutine?
 
jetzt funktioniert's

Habe string statt char uebergeben.
Das einzige, was mich stoert, ist dass ich jedes mal im Programm in char umwandeln muss, weil ich sonst den Inhalt nicht mit sscanf lesen kann... :-(

Trotzdem danke.
 
Wenn du schon so fortschrittlich bist, std::strings zu verwenden (dank C++), dann könntest du doch eventuell auch von sscanf auf std::istream umsteigen. In deinem Fall wäre vielleicht std::istringstream aus der Headerdatei <sstream> nützlich.
 

Neue Beiträge

Zurück