ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
569
569
EMPFEHLEN
-
Hallo zusammen

ich hab ein kleines Problem mit c, folgendes: ich schreibe gerade ein programm, das Dezimal Zahlen in römische zahlen umwandelt. Ich übergebe an die Funktion also eine Dezimalzhal, brauche als rückgabe Wert aber einen String. hier mal ein kleiner Auszug:
Code :1 2 3 4 5 6 7 8 9 10 11 12
dec = atoi(argv[2]); // Prüfung der Funktion if (!strcmp(argv[1],"dec2roe")) printf("Ergebnis: %s\n", dec2roe(dec)); ... char dec2roe(int dec) { // Fehler: Dezimalzahl größer als 3888 if (dec > 3888) { return("Zahl zu groß\n"); }
der compiler meckert ständig:
"unteschiedliche Basistypen oder so... ich hab keine Ahnung wie ich es sonstmachen soll.
hoffe ihr könnt mir helfen
thxGeändert von wodka (11.11.02 um 23:20 Uhr)
-
12.11.02 00:17 #2
- Registriert seit
- Nov 2001
- Ort
- Wien
- Beiträge
- 1.390
ein char ist ein einzelner Buchstabe - das reicht nur für einen recht kurzen String
char[] wäre eine Verbesserung, du könntest so einen String mit Inhalt zurückgaben. (Habt ihr schon ein bisschen mit Pointern gearbeitet? Sonst sind Missverständnisse vorprogrammiert!)
Die schönste Lösung wäre es imo, [C++]ein eigenes Stringobjekt zu verwenden (oder zumindest [C] sich einen entsprechenden Datentyp zu basteln). Das würde die Sache leichter lesbar machen.
-
leider funktionierts nicht, wie es sollte:
char[] dec2roe(int dec) {
gibt er mir als syntaxfehler zurück
char* dec2roe(int dec) {
selbe Fehlermeldung wie zuvor
?! das ganze sollte eigetnlich so funktioniern wie oben geschildert.
aber danke erstmal
-
12.11.02 01:02 #4
- Registriert seit
- Nov 2001
- Ort
- Wien
- Beiträge
- 1.390
char* dec2roe(int dec)
gibt auch nur einen Zeiger auf ein char[] zurück - das char[] musst du vorher irgendwo erzeugen (und wenn du das dynamisch getan hast auch wieder zerstören)
Ich nehme an das ist eine Schulaufgabe?
Habt ihr Zeiger / dyn. Speicherverwaltung schon durchgenommen?
--
Ein Möglichkeit, einen String zurückzugeben:
PHP-Code://Rückgabe eines String mit c's Mitteln
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* ReturnAString(int a);
int main()
{
char* TheString=NULL; /*Ein Zeiger auf Speicher, noch leer*/
int Wert=54321;
TheString=ReturnAString(Wert);
printf("Die Zahl als String: %s",TheString);
free(TheString); /*Den Speicher am Ende dem System zurückgeben*/
return 0;
}
char* ReturnAString(int a)
{
char* Temp;
char x[80];
sprintf(x,"%d",a);
Temp=(char*)malloc((strlen(x)+1)*sizeof(char)); /*Speicher reservieren. Achtung, aufden Platz für den Terminator nicht vergessen!*/
strcpy(Temp,x); /*Den String in den neuen Speicher kopieren*/
return Temp; //die Speicheradresse zurückgeben
}
Geändert von Robert Martinu (12.11.02 um 02:04 Uhr)
-
vielen Dank, jetzt gehts, das ganze ist fürs erste Semester informatik studium - aber ich bin noch weit weit am anfang!
Aber ich habs jetzt hinbekommen, ich versteh nur nicht ganz, warum die Funktion 2 mal deklariert wird, einmal vor der Funktion main und dann nochmal bei der eigentlichen definition... müßte es nicht reichen, wenn ich der funktion einmal sage, sie soll mir einen char zurückliefern****?
-
12.11.02 15:02 #6
- Registriert seit
- Nov 2001
- Ort
- Wien
- Beiträge
- 1.390
Der Compiler muss von jeder Funktion erst mal gehört haben bevor er weis wie er mit ihr im Laufe des Compilierens umgehen muss.warum die Funktion 2 mal deklariert wird
Würde der Compiler das komplette .cpp erst mal durcharbeiten, dann müsste man den Funktionskopf nicht nochmal oben hinschreiben.
(Man könnte auch die ganze Funktion an eine Stelle vor ihrem ersten Vorkommen innerhalb einer anderen Funktion stellen - bei grossen Daeien ist das unübersichtlich; bei einigen Rekursionen gänzlich unmöglich.)
Ähnliche Themen
-
eine Methode mit zwei möglichen Rückgabewerten
Von lafilia im Forum Java GrundlagenAntworten: 3Letzter Beitrag: 03.12.10, 14:06 -
Probleme mit Rückgabewerten
Von KaWi_Trine im Forum JavaAntworten: 2Letzter Beitrag: 19.04.10, 11:36 -
Function mit mehreren Rückgabewerten
Von schlumsch im Forum Delphi, Kylix, PascalAntworten: 2Letzter Beitrag: 17.12.09, 21:04 -
Probleme mit Funktionen
Von igfas im Forum PHPAntworten: 1Letzter Beitrag: 06.07.06, 10:31 -
Probleme mit Funktionen
Von SirNeo im Forum PHPAntworten: 0Letzter Beitrag: 26.02.02, 16:57





Zitieren
Login






