C-Programm (Win-->Mac OSX)

Dieses Thema im Forum "Mac OS X Entwickler, Programmierer" wurde erstellt von marco604, 14.12.2005.

  1. marco604

    marco604 Thread Starter MacUser Mitglied

    Beiträge:
    317
    Zustimmungen:
    0
    MacUser seit:
    10.10.2004
    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:

  2. dkreutz

    dkreutz MacUser Mitglied

    Beiträge:
    458
    Zustimmungen:
    18
    MacUser seit:
    14.05.2005
    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
     
  3. below

    below MacUser Mitglied

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

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

    Alex
     
  4. marco604

    marco604 Thread Starter MacUser Mitglied

    Beiträge:
    317
    Zustimmungen:
    0
    MacUser seit:
    10.10.2004
    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!?
     
  5. below

    below MacUser Mitglied

    Beiträge:
    13.297
    Zustimmungen:
    1.086
    MacUser seit:
    15.03.2004
    Nimm doch statt getch() getchar()

    Gruss

    Alex
     
  6. dannycool

    dannycool MacUser Mitglied

    Beiträge:
    1.485
    Zustimmungen:
    34
    MacUser seit:
    02.02.2005
    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).
     
  7. marco604

    marco604 Thread Starter MacUser Mitglied

    Beiträge:
    317
    Zustimmungen:
    0
    MacUser seit:
    10.10.2004
    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*
     
    Zuletzt bearbeitet: 14.12.2005
  8. fr00p

    fr00p MacUser Mitglied

    Beiträge:
    18
    Zustimmungen:
    0
    MacUser seit:
    20.11.2005
    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
     
Die Seite wird geladen...

Diese Seite empfehlen