char aus einer funktion an main übergeben!?
-
Wie in 10% aller anderen Themen hier lautet die Antwort:
std::string.
-
da soll es raus zur main:
gettime.h
#include <winbase.h> using namespace std; char GetTime() { SYSTEMTIME systime; char uhrzeit[9]; GetLocalTime(&systime); sprintf(uhrzeit, "%02d:%02d:%02d", systime.wHour, systime.wMinute, systime.wSecond); OutputDebugString(uhrzeit); return uhrzeit; }main:
... GetTime(); OutputDebugString(uhrzeit); ...
-
Lern programmieren (und das hier)...
#include <winbase.h> #include <string> using namespace std; string GetTime() { SYSTEMTIME systime; char uhrzeit[9]; GetLocalTime(&systime); sprintf(uhrzeit, "%02d:%02d:%02d", systime.wHour, systime.wMinute, systime.wSecond); OutputDebugString(uhrzeit); return uhrzeit; }main:
... OutputDebugString(GetTime().c_str()); //oder was die Funktion erwartet ...
-
TyRoXx schrieb:
Wie in 10% aller anderen Themen hier lautet die Antwort:
std::string.mag sein... offensichtlich bekomme ich es trotzdem nicht in einen syntaktischen zusammenhang...
EDIT: danke für das beispiel, ich würde trotzdem gerne erfahren wie man einen char überträgt...
ich würde auch gerne wissen ob der string für eine schlefe die mit zeitüberprüfung das richtige ist ... ? kann ich mudulo mit einen string benutzen oder muss ich wieder in einen double o.ä. konvertieren ?
-
WhiteLion schrieb:
EDIT: danke für das beispiel, ich würde trotzdem gerne erfahren wie man einen char überträgt...
indem man überlegt ob man wirklich einen char braucht, oder ob (const) char* nicht angebrachter wäre...
-
const char* GetTime(const char* dest) { SYSTEMTIME systime; GetLocalTime(&systime); sprintf(dest, "%02d:%02d:%02d", systime.wHour, systime.wMinute, systime.wSecond); OutputDebugString(dest); return dest; } int main() { char test[10]; GetTime(test); printf("%s", test); }Enjoy your C-Gefrickel.
-
WhiteLion schrieb:
EDIT: danke für das beispiel, ich würde trotzdem gerne erfahren wie man einen char überträgt...
//auf keinen Fall das: char *GetTime() { char *c = new char[9]; //... return c; } //das hier macht man in C char *GetTime(char *dest, size_t size) { assert(size >= 9); //oder sowas //... return dest; } //das hier macht man lieber gar nicht char *GetTime() { static char buffer[9]; //durch static bleibt buffer nach der Funktion erhalten //... return buffer; }
-
man seid ihr schnell ... mein teppich freut sich (bekommt keine flecken) und ich mich auch, weil ich mal was verstanden habe.

DANKE
-
WhiteLion schrieb:
EDIT: danke für das beispiel, ich würde trotzdem gerne erfahren wie man einen char überträgt...
Eine Funktion, die ein Zeichen (engl "character") zurückgibt:
char gib_mir_ein_zeichen() { return '?'; }Funktionen, die "rohe Arrays" zurückgeben (ich meine jetzt keine Zeiger), gibt es nicht.
WhiteLion schrieb:
kann ich mudulo mit einen string benutzen
Guck doch mal selbst nach auf der std::string-Referenzseite, die hier schon verlinkt wurde.
-
WhiteLion schrieb:
EDIT: danke für das beispiel, ich würde trotzdem gerne erfahren wie man einen char überträgt...
Ein char ist ein einzelnes Zeichen, also nicht das, was du willst.
WhiteLion schrieb:
ich würde auch gerne wissen ob der string für eine schlefe die mit zeitüberprüfung das richtige ist ... ? kann ich mudulo mit einen string benutzen oder muss ich wieder in einen double o.ä. konvertieren ?
Je nachdem, was du vorhast. Hol dir die Zeit als einen einfachen time_t Wert. Da stecken alle Infos (Jahr, Tag, Monat, ... ,Sekunde etc)drin, die du mit entsprechenden Funktionen rausziehen kannst, guckst du auch hier
http://www.cplusplus.com/reference/clibrary/ctime/strftime/Unter anderem ist deine GetLocalTime Funktion hochgradig unportabel, das kannst du auch anders haben, guckst du auch wie man sonst noch ein char Array in einer Struktur gekapselt übergeben kann:
typedef struct { time_t t; // Hier stecken später alle nötigen Infos drin! char strtime[64]; // Redundantes char Arrary! }MyTime; MyTime Time() { MyTime mt = {0}; // U.a. Nullterminierung des char Array. struct tm* tinfo = {0}; // Zwischenspeicher. char* loc = setlocale(LC_ALL, "German"); // Bonus: Wir wollen deutsches Format. time ( &mt.t ), tinfo = localtime ( &mt.t ); strftime ( mt.strtime, sizeof ( mt.strtime )-1, "%A, %c", tinfo ); setlocale ( LC_ALL, loc ); // Bonus: Ursprungszustand der locale Einstellungen herstellen. return mt; } int main() { MyTime myMainTime = Time(); // So kriegst du das Zeugs in die main rein :) puts ( myMainTime.strtime ); // So schön kann eine Programmzeile aussehen :) ...
-
Das mit der Locale Sicherung habe ich verdummbeutelt
, da fehlte noch was:MyTime Time() { .. char* loc = setlocale(LC_ALL, NULL); // Bonus: Ursprungszustand sichern. setlocale(LC_ALL, "German"); // Bonus: Wir wollen deutsches Format. setlocale ( LC_ALL, loc ); // Bonus: Ursprungszustand der locale Einstellungen herstellen. .. }War quasi ein Bonus zu wenig. Man muss es ja nicht gleich übertreiben, mit der Großzügigkeit, ne.

-
Eine wichtige Sache wie er es "in die main bekommt" ist doch auch über die Parameter.
void Hallo(std::string & str) { str = "Hallo"; ] int main() { std::string mainstr = ""; Hallo(mainstr); std::cout << mainstr; }MfG cobra11freak