"end of file" befehl bei mac?

pappe

Aktives Mitglied
Thread Starter
Dabei seit
17.06.2002
Beiträge
380
Reaktionspunkte
4
Hallo,

wir sitzen gerade in der Schule und haben ein C-Programm geschrieben das den "End of File" befehl beinhaltet. Er soll beim Drücken von STRG C das Programm beenden.
Nun haben wir das selbe Programm in XCode eingegeben, aber der Mac kennt anscheinend den STRG C befehl nicht??? Gibt es dafür einen anderen befehl? In der XCode Hilfe sind wir nicht fündig geworden...
 
apfel + . oder
ctrl + v

ob dies aber die befehle fuer c sind weis ich nicht.
bei apple bricht man so aufjedenfall den laufenden prozess ab.
 
Original geschrieben von pappe
Hallo,

wir sitzen gerade in der Schule und haben ein C-Programm geschrieben das den "End of File" befehl beinhaltet. Er soll beim Drücken von STRG C das Programm beenden.
Nun haben wir das selbe Programm in XCode eingegeben, aber der Mac kennt anscheinend den STRG C befehl nicht??? Gibt es dafür einen anderen befehl? In der XCode Hilfe sind wir nicht fündig geworden...
 
äähm - soweit ich weiss wird bei ctrl-c (strg-Taste gint es beim Mac nicht) ein laufendes Kommadozeilenprogramm beendet.
kannst Du mal ein bisschen genauer beschreiben worum es geht (quelltext-ausschnitt) , und wie es funktionieren sollte.
 
programmcode

Das Programm soll die Zeichen von der Tastatur ins Ausgabefenster kopieren und das Programm soll abgebrochen werden, wenn das EOF End of File getippt wird ^c.

#include<stdio.h>

main ()
{ int c;
c = getchar();
while (c != EOF) {
putchar (c);
c = getchar (); }
}
 
hallo pappe,

also bei mir funktionier das; sieh´ selbst:
PHP:
saturn:~/20 Code/20 C/00 aktuell/pappe maceis$ vi pappe.c
saturn:~/20 Code/20 C/00 aktuell/pappe maceis $ gcc pappe.c -o pappe
saturn:~/20 Code/20 C/00 aktuell/pappe maceis $ l
total 32
-rwxr-xr-x  1 martin  admin  11564 16 Apr 22:11 pappe
-rw-r--r--  1 martin  admin    113 16 Apr 22:11 pappe.c
saturn:~/20 Code/20 C/00 aktuell/pappe maceis $ ./pappe 
a
a
s
s
^C
saturn:~/20 Code/20 C/00 aktuell/pappe maceis $
Ich hab das Programm mal eben kompiliert (habs pappe genannt).
ich gebe ein a ein, dann ein s und dann ctrl-c und es bricht ab - alles roger.
was machst du anders ?
Du benutzt XCode (hab ich nicht gemacht für so ein einfaches Ding).
Also: was für eine Art von Projekt hast du angelegt ?
 
Projekt C lernen

Das ganze hat den Hintergrund, dass wir in der Schule C lernen und ich nicht mit den dortigen Windoofs arbeiten will. Also gebe ich die ganzen Programme die wir dort schreiben (sind wirklich nur ganz kleine Anfänger-Geschichten) in XCode ein. Es ist einfach sehr bequem, ausserdem hab ich noch nicht ausprobiert wie man die Programme mit dem Terminal compiliert (weiß nicht genau wie´s funtz). Naja, wir stehen jetzt noch ganz am Anfang unserer Programmierer-Karriere...
 
in Xcode nicht...

Also ich hab nun den Text nochmal in Xcode eingetippt und es funtz dort def. nicht.

Wie hast du das denn gemacht mit dem kompilieren? Mit dem Terminal?
 
Hi,

ich habe von Xcode (noch) keine Ahnung, aber habe afair mal irgendwo aufgeschnappt, dass man damit keine richtigen Konsolenanwendungen machen kann..

Zum Kompilieren im Terminal: einfach mit einem beliebigen Editor eine Datei anlegen (z.B. main.c), in diese dann deinen Quelltext hinein und dann sollte im Terminal ein "gcc main.c" schon genügen und dir eine ausführbare Datei (a.out sollte sie heißen) erstellen. Mit dem Parameter -o kannst du auch einen anderen Dateinamen für das zu erzeugende Binary angeben (zumindest geht das alles unter Linux alles mit gcc so).

Ciao
 
Ich dachte

EOF ist STRG + D, oder nicht?
ich denke auf Unixen ist das allgemein so.

In IDEs funzt das net, da müsst ihr schon über Terminal das Prog aufrufen.
MAcht an Anfang eh mehr Spass im Terminal zu tippen mit VI editieren und cc ...... (und argumenten) kompilieren, mit ./a.out das Prog aufrufen ....
 
übrigens,

wenn du anfangs ein wenig Unterstützung möchtest, kannst du mich gern mal anmessen, wenn ich grad online bin versteht sich, wir haben auch vor kurzem ein wenig C unter Linux gecodet.
 
funzt nicht...

Original geschrieben von Zeeke
und dann sollte im Terminal ein "gcc main.c" schon genügen und dir eine ausführbare Datei (a.out sollte sie heißen) erstellen.
&nbsp;

Ich hab eine Datei (die mit Xcode erstellt wurde) versucht auf diese Weise zu kompilieren, aber Fehlanzeige: Er bringt mir die Fehlermeldung: "No such file..."

Dann hab ich mit WorldText eine Datei angelegt: test.c ; und dann im Terminal gcc test.c eingegeben: Die gleiche Fehlermeldung!
Dann hab ich wieder gcc eingegeben und den genauen Dateipfad dazu: Eine ellenlange Liste mit errors und warnings kam heraus.
 
wie hast du denn versucht die Datei auszuführen?
wechsle im Terminal in das Verzeichnis, indem sich die Datei befindet.
überprüfe mit dem Befehl "ls" , ob sich eine Datei mit dem gesuchten Namen, oder mit dem Namen " a.out" dort befindet.
dann kannst du das Programm mit "./a.out" aufrufen.

der "./" muss davor, damit das terminal weiss, dass sich das Programm im derzeitigen Verzeichnis befindet. Wenn du dich ein bisschen mit Unix Beschäftigst, kannst du dann das Verzeichnis, in dem du meistens Proggst in den sogen. PATH eintragen, dann kannste auch das "./" weglassen.
 
Original geschrieben von Zeeke
Hi,

ich habe von Xcode (noch) keine Ahnung, aber habe afair mal irgendwo aufgeschnappt, dass man damit keine richtigen Konsolenanwendungen machen kann..
...
Ciao
&nbsp;
Das ist definitiv falsch.
Man muss nur beim Anlegen des Projektes ein "Tool" anlegen:

- Standard Tool -> This project builds a command-line tool written in C.
- Foundation Tool -> This project builds a command-line tool that links against the Foundation library.
- Core Service Tool -> This project builds a command-line tool that links against the Core Services library.
- Core Foundation Tool -> This project builds a command-line tool that links against the Core Foundation library.
- C++ Tool -> This project builds a command-line tool that links against the stdc++ library.

sind die möglichen Optionen. Die Erklärungen sind direkt aus XCode kopiert.

@pappe.
für einfache C und c++ Programme verwende ich das Terminal.
wie kompiliert wird, wurde schon erklärt.
Ich selbst verwende dazu Makefiles, aber für einfache Programme, die nur aus einer Datei bestehen ist das gar nicht erforderlich.


Im Terminal bedeutet ^C "Stoppe das laufende Programm sofort" (entspricht "Sofort Beenden" im Finder)
^D heisst "exit"; damit kann man ein laufendes Programm beenden, aber auch eine Shellsitzung, also sich abmelden.

"EndOfFile" ist in beiden Fällen eigentlich nicht ganz richtig.
Mit EOF kann man das Ende einer Datei markieren, wenn die Datei über die Standardeingabe eingelesen wird.
Ist zB beim Versenden einer eMail über telnet wichtig, oder bei solchen Befehlen, die aus Dateien oder aus der Standardeingaben lesen können (wie ZB "cat")
i. d. R. kann man selber definieren, welches Zeichen als EOF gelesen wird; bei "mail" ist das zum Beispiel ein "." auf einer eigenen Zeile

In deinem Programm kommt das auf das selbe hinaus, ist aber genau genommen nicht korrekt.
Ansonsten hat banz aber recht, wenn er sagt, dass ^C in XCode nicht funktioniert.

Was für ein Projekt hast Du denn in XCode angelegt ?
Ruf es doch mal im Termial auf (einfach die Datei auf ein Terminalfenster ziehen und enter)
 
ach ja,

das ganze geht schon irgendwie in XCode:
Wenn du ein Project startest (standard tool) siehst du im Projectfenster Häkchen neben
"main.c" und einer Datei, mit dem Namen "namedeinesprogramm.1".
Es gibt aber auch eine Datei, die rot angezeigt wird, und neben der kein Häkchen steht.
Setze hier einen Haken, schreibe deinen Code in die main.c und kompiliere mit Apfel+k.
Dann müsste im Projectordner (im Finder überprüfen) ein Datei mit dem Namen des Projects liegen.Die muss dann allerdings trotzdem über das Terminal geöffent werden, weil du nun mal ein Konsolenprogramm erstellt hast.
so long
 
Re: ach ja,

Original geschrieben von banz
...
Es gibt aber auch eine Datei, die rot angezeigt wird, und neben der kein Häkchen steht.
Setze hier einen Haken, schreibe deinen Code in die main.c und kompiliere mit Apfel+k.
....
&nbsp;
Wozu der Haken ?
den brauchts nicht - die Datei ist rot dargestellt, weil es diese Datei noch gar nicht gibt.
Sie ist das Produkt, dass beim Kompilieren erstellt wird - ansonsten hast du aber recht.
 
Hi Leute,

also was ist jetzt der EOF beim Mac ? Ich habe eine char-Einleseschleife und will die schleife mit EOF beenden (zumindest der Prof will dass ich es so mache). Anschließend soll das eingelesene wieder ausgegeben werden (Programmierung in C)

Die Windows-Leute nehmen cygwin her und tippen als EOF STRG+D ein

Code:
/*Einleseschleife*/
	for (i=0; i<1024;i++){
		scanf("%c",&zeichenkette[i]);	
	
	if (zeichenkette[i]=='\0')
		break;
	
	}

/*Ausleseschleife*/
	for (i; i=0; i--){
		printf("%c",&zeichenkette[l]);
	}
 
ctrl-D ist EOF am Mac
ctrl-Z unter windows.

ctrl-c sendet SIGINT an den Prozess, was die meisten programme beendet, wenn sie es nicht abfangen.

so long, lukas
 
So ich hab mir gerade gedacht ich mach das mal kurz in als screencast, kann mich nämlich auch noch erinnern wie ich vor meinem ersten C Programm gesessen hab :) vielleicht hilfts dir weiter wenn du es wirklich seihst auf dem Terminal. Anschauen sollte bald gehen weiss nicht wie schnell vimeo encoded...

Echo char in C

Have fun C macht echt Freude zu Programmieren :)
 
Zuletzt bearbeitet:
Hi,

irgendwie krieg ich den screencast nicht auf... Flash wird noch geladen aber dann bleibt der Bildschirm weiß..
:confused:

Danke und Grüße
Blain
 
Zurück
Oben Unten