übungsprogramm geht nicht!! veraltete Konvertierung von Zeichenkettenkonstante in »c

G

gosunosu

Jungspund
hallo alle zusammen,
ich bin gerade son bissel dabei c++ zu lernen und komme auch ganz gut voran...
bis auf dieses kleine übungsprogrämchen, welches ich aus dem buch c++ von a bis z habe
... nur leider geht dieses hier irgendwie nicht.
hier der code (eigentlich nur abgeschrieben darum verwunderts mich ja)

Code:
// ptrptr2.cpp
#include <iostream> 
using namespace std;

int main(void) {
	char* cptrptr[] = {"super", "toll", "hammer"};
	char* cstring[3];
	char carray[] = "und";
	
	cout << *cptrptr << "\n";
	cout << *(cptrptr + 1) << "\n";
	cout << *(cptrptr + 2) << "\n";
	
	cout << cptrptr[0] << "\n";
	cout << cptrptr[1] << "\n";
	cout << cptrptr[2] << "\n";
	
	// 2.string " toll " -> dritter buchstabe "l"
	cout << *(*(cptrptr+1)+2) << "\n";
	cout << *(cptrptr[1]+2) << "\n";
	cout << cptrptr[1][2] << "\n";

	cstring[0]= cptrptr[0];
	cstring[1]= carray;
	cstring[2]= cptrptr[1];

	cout << cstring[0] << cstring[1] << cstring[2] << "\n";
	return 0;
}

und das ist die fehler meldung die ich bekomme wenn ich:

g++ ptrptr2.cpp -o ptrptr2

eingebe.

ptrptr2.cpp: In function »int main()«:
ptrptr2.cpp:6: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*«
ptrptr2.cpp:6: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*«
ptrptr2.cpp:6: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*«

... ich mein das buch ist eigentlich ziemlich neu darum verwundert mich die fehlermeldung ... naja eventuell hat jemand eine idee woran es liegen könnte...
 
Hallo gosunosu!

Ich kann das nicht ganz nachvollziehen. Bei mir kompiliert er alles anstandslos:
Code:
C:\>g++ -Wall -ansi -pedantic ptrptr2.cpp -o main.exe

C:\>g++ --version
g++ (GCC) 3.4.5 (mingw-vista special r3)
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Ok, ich bin mit Vista und MinGW unterwegs, aber da du uns weder OS noch Compiler verraten hast, geht das wohl in Ordnung ;-)
Der Code ansich sieht auch korrekt aus. Also wird es wohl an etwas anderem liegen.
 
Zuletzt bearbeitet:
Ja wo sind wir denn hier?
Fehlermeldungen googlen sollte man wohl noch beherrschen. (Man muss ja nichtmal selber was tippen, nur copy'n'paste...)
Go for it!

Ich könnte jetzt natürlich auch noch gleich die Lösung hier reinpasten, aber dann lernst ja nix (bzw. noch weniger) ;)
 
ja sorry mein os ist ubuntu 2.6.24-22-generic
und mein compiler ist g++ 4.2 denk ich mal ..bin mir aber nich 100 pro sicher wie krieg ich das raus ??
und beim googlen bin ich gerade :)
...
hab ja auch schon rumprobiert so isses nicht ... ich probiers weiter
 
Ja wo sind wir denn hier?
Fehlermeldungen googlen sollte man wohl noch beherrschen. (Man muss ja nichtmal selber was tippen, nur copy'n'paste...)

ACK.

Ich habe von c/c++ in etwa so viel Ahnung wie eine Kuh vom Eierlegen, aber nach kurzem "Gurgeln" der Fehlermeldung (1:1 bei Tante G eingeworfen) fand sogar ich die Lösung (und das im allerersten Treffer, der zufälligerweise zu einem *Buntu-Forum führt).

Code:
$ g++ ptrptr2.cpp -o a.out

./a.out
super
toll
hammer
super
toll
hammer
l
l
l
superundtoll
BTW: Die Warnmeldung sagt im übrigen "veraltet", deshalb wirft wohl der leicht angestaubte 3.4.5 diese Meldung nicht aus, der TE hat sicher einen g++ >= 4.0.
 
Hmm, und schon wieder 'was gelernt! Ich werde hier noch richtig schlau ;-)
 
so ich habs ...

... und es war nicht der erste treffer bei google :)

aber danke trotzdem leutz!!!

Hier noch mal der code wie er richtig ist und auch geht :)

Code:
// ptrptr2.cpp
#include <iostream> 
using namespace std;

int main(void) {
	const char* CPTRPTR[] = {"super", "toll", "hammer"};
	const char* CSTRING[3];
	char carray[] = " und " ;
	
	cout << *CPTRPTR << "\n";
	cout << *(CPTRPTR + 1) << "\n";
	cout << *(CPTRPTR + 2) << "\n";
	
	cout << CPTRPTR[0] << "\n";
	cout << CPTRPTR[1] << "\n";
	cout << CPTRPTR[2] << "\n";
	
	// 2.string " toll " -> dritter buchstabe "l"
	cout << *(*(CPTRPTR+1)+2) << "\n";
	cout << *(CPTRPTR[1]+2) << "\n";
	cout << CPTRPTR[1][2] << "\n";

	CSTRING[0]= CPTRPTR[0];
	CSTRING[1]= carray;
	CSTRING[2]= CPTRPTR[1];

	cout << CSTRING[0] << CSTRING[1] << CSTRING[2] << "\n";
	return 0;
}

tschö mit ö...
 

Ähnliche Themen

String auf Konsole ausgeben

Funktion nicht gefunden

Prozesskommunikation mit PIPES - wie funktioniert das?

Ausführbare C-Datei von Mac OS auf Embedded Linux ausführen

Aufgabe in C

Zurück
Oben