• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Char in Int und umgekehrt C WinAPI /C++

Cody227

Mitglied
Hallo, ich suche wenn möglich eine funktion mit der ich ein 3 stelligen char (2 zahlen + terminatorzeichen) in ein int umwandeln kann, dabei soll die zahl aus dem string die gleiche sein wie die im int. Ich möchte nämlich mit der systemzeit rechnen und die funktion die ich benutze gibt das leider nur als char aus. Ich hab da schon viel rumexperimentiert mit rumcasten usw., bin aber leider zu keinem verwertbaren ergebnis gekommen.

mfg Cody227
 
Werbung:
Könntest du ein Beispiel posten? (Nach Möglichkeit ohne WinAPI. Wir haben hier teilweise kein Windows.)

Vielleicht einfach die Deklaration der Variablen, die du konvertieren möchtest.
 
Meinst du soetwas:

PHP:
int main(int argc, char* argv[]){
    const char* foo = "83";
    int number = (foo[0] - '0') * 10 + foo[1] - '0';
    printf("Number = %i", number);
}
 
Werbung:
habs eben mal im onlinecompiler getestet und es macht scheinbar das was ich brauche. Merkwürdigerweise hatte ich aber so ziemlich das gleiche schon im "normalen" compiler getestet und es sind immer ziemlich schräge Ergebnisse rausgekommen :neutral:

kann ich dann auf die gleiche weise auch int in char umwandeln?
 
Ja, funktioniert ganz ähnlich:

PHP:
int main(int argc, char* argv[]){
    int number = 83;
    char foo[] = "  ";
    foo[0] = number / 10 + '0';
    foo[1] = number % 10 + '0';
    printf("Number = %s", foo);
}
 
Und wie mach ich das wenn ich jedesmal wenn sich die uhrzeit um eine sekunde/minute ändert das Fenster neu zeichnen will?

für's neu zeichnen hab ich schon InvalidateRect(hwnd,NULL,TRUE); aber ich bekomms nicht hin die Zeit-abfrage einzubauen, ohne dass die Nachrichtenabfrage zB durch eine Schleife mit wait-funktion blockiert wird. Dabei soll von der systemzeit ausgegangen werden.
 
Werbung:
Dazu brauchst du einen Timer.

Code:
LRESULT CALLBACK MyWindow(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
{

const UINT Timer1 = 1;

switch(msg)
{

case WM_CREATE:
{
SetTimer(hWnd,Timer1,1000,0);
}
break;

case WM_TIMER:
{
InvalidateRect(hWnd,0,0);
}
break;

case WM_PAINT:
{
// time abfragen, string formatieren und ausgeben
}
break;

}

return DefWindowProc(hWnd,msg,wParam,lParam);

}
 
Ja hab ich jetzt auch so gemacht. Aber mittlerweile hab ich ein viel größeres Problem. Der Text den ich anzeige ist immer so blöd weiß hinterlegt, aber ich bekomme diesen weissen "hintergrund" nicht weg

//EDIT: problem solved
 
Zuletzt bearbeitet:
Zurück
Oben