C-Programm (Win-->Mac OSX)

  1. marco604

    marco604 Thread StarterMacUser Mitglied

    Mitglied seit:
    10.10.2004
    Beiträge:
    317
    Zustimmungen:
    0
    Moin! Ich habe ein kleines Problem mit dem Kompilieren eines Programms das für Windows geschrieben wurde. Es soll einfach gesagt nur eine Tastatureingabe mit einem Wert belegen und diesen dann in ein *.txt-File schreiben. (Das Textfile benötige ich für ein POV-Ray-Programm)

    Ich habe schon herausgefunden das es die conio.h nicht auf dem Mac gibt. Explizit brauche ich getch(). Dieser Befehl scheint aber in der <curses.h> zu stehen.

    Beim Kompilieren des Programms bekomme ich jetzt aber noch Fehler,.. :(

    Ich muss dazu sagen das ich _keine_ Ahnung von C-programmieren habe, vielleicht erbarmt sich ja jmd. das zum Laufen zu bekommen. Ist bestimmt auch nur ne Sache von 5 Minuten (wenn überhaupt). Bin für jeden Tipp dankbar!!!

    Ich hänge den Quellcode mal als gepackte Datei an.
     

    Anhänge:

    • Dateigröße:
      1,6 KB
      Aufrufe:
      19
    marco604, 14.12.2005
  2. dkreutz

    dkreutzMacUser Mitglied

    Mitglied seit:
    14.05.2005
    Beiträge:
    458
    Zustimmungen:
    18
    Meine praktische Programmiererfahrung mit C liegt schon etwas zurück, meine mich aber zu erinnern, dass es im ANSI-C Standard auch ein paar Bibliotheken mit Basisfunktionen zur Ein/Ausgabe auf die Konsole gibt (stdio.h?) die man dann über Terminal/Shell dann in eine Datei umleiten kann
     
    dkreutz, 14.12.2005
  3. below

    belowMacUser Mitglied

    Mitglied seit:
    15.03.2004
    Beiträge:
    13.289
    Zustimmungen:
    1.086
    Code:
    gcc -lcurses c-cur8.c 
    geht.

    Stürzt dann beim Ausführen ab, aber ich hab auch keine Inputdatei reingetan.

    Alex
     
    below, 14.12.2005
  4. marco604

    marco604 Thread StarterMacUser Mitglied

    Mitglied seit:
    10.10.2004
    Beiträge:
    317
    Zustimmungen:
    0
    Hi, das kompilieren klappt schonmal, leider bekomme ich jetzt die Fehlermeldung

    Bus error

    wenn ich die Datei ausführe :(

    Vielleicht sollte ich das Programm nochmal von vorne aufziehen und selber schreiben in ner Sprache die ich auch kann. Oder gibts sowas vielleicht schon?

    Also ein Progrämmchen das Tastaturevents in eine Datei schreibt!?
     
    marco604, 14.12.2005
  5. below

    belowMacUser Mitglied

    Mitglied seit:
    15.03.2004
    Beiträge:
    13.289
    Zustimmungen:
    1.086
    Nimm doch statt getch() getchar()

    Gruss

    Alex
     
    below, 14.12.2005
  6. dannycool

    dannycoolMacUser Mitglied

    Mitglied seit:
    02.02.2005
    Beiträge:
    1.489
    Zustimmungen:
    34
    Nach Änderung von getch() in getchar() bringt das Programm bei mir keinen Fehler. Allerdings habe ich es davor nicht probiert. Es funktioniert sowieso nicht (jedenfalls tut es nichts sinnvolles).
     
    dannycool, 14.12.2005
  7. marco604

    marco604 Thread StarterMacUser Mitglied

    Mitglied seit:
    10.10.2004
    Beiträge:
    317
    Zustimmungen:
    0
    Naja... es soll halt eine Textdatei anlegen und da bestimmte Werte speichern. Ich brauche so ein File um in einem Raytracer (POV-Ray) eine "interaktive" Steuerung zu bauen, also ich die zu rendernden Bilder live beeinflussen kann. Unter Windows klappts ganz gut. Ich werde die Steuerung glaube ich aber eher als Java Applet schreiben.

    Probiere aber zunächst einmal die Verwendung von getchar() aus.

    Was bedeutet der Zusatz -lcurses eigentlich genau beim kompilieren. Habe mal einen Kurs C-Programmierung besucht, aber viel ist da nicht hängengeblieben :rolleyes:

    Danke schonmal für eure Hilfe!




    Edit: Du hast recht, es scheint unter OSX nichts sinnvolles zu machen. :D Au man,.. ich schreib lieber was neues.... Das Programm stammt übrigens von meinem Prof. *g*
     
    marco604, 14.12.2005
  8. fr00p

    fr00pMacUser Mitglied

    Mitglied seit:
    20.11.2005
    Beiträge:
    18
    Zustimmungen:
    0
    getchar() benötigt im Gegensatz zu getch()(ist übrigens nicht Ansi-C) nach der Eingabe des Wertes noch ein 'Enter'. Das soll nicht immer ein Problem sein, aber bei mir wars das vor Kurzem. :rolleyes: Habe folgende Funktion im c-plusplus.de Forum gefunden:

    Code:
    #include <termios.h>
          
           int getch() {
               static int ch = -1, fd = 0;
               struct termios neu, alt;
               fd = fileno(stdin);
               tcgetattr(fd, &alt);
               neu = alt;
              neu.c_lflag &= ~(ICANON|ECHO);
              tcsetattr(fd, TCSANOW, &neu);
              ch = getchar();
              tcsetattr(fd, TCSANOW, &alt);
              return ch;
          }
    
    lg, fr00p
     
    fr00p, 19.12.2005
Die Seite wird geladen...