mikrocontroller.net

Forum: PC-Programmierung will c lernen und habe ein buch, kapiere aber das ganze immer noch nicht.


Autor: Niklas Braun (nikeldi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich habe von einem Freund ein Buch ausgeliehen um c zu lernen. Ich habe 
früher schonmal c gekonnt, habe aber alles, wirklich alles vergessen. 
Und nun lege ich in XCode ein Projekt an und es springen mir unerwartete 
Zeilen ins Gesicht, von denen ich nichts kapiere. Könnte mir mal jemand 
zeigen, wie insgesamt die Programmzeilen im Editor aussehen sollten?

Vielen Dank
Niklas

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
// Das ist ein Kommentar

Stell doch mal konkrekte Fragen zu einer Zeile die du nicht verstehst.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann es sein, dass du den Fehler machst,als erstes ein Programm mit 
einer graphischen Obefläche zu programmieren?

Diese Kategorie von Programmen sind für den Einstieg ziemlich 
ungeeignet, weil du erst mal einen enormen Überbau benötigst um 
überhaupt graphische Elemente auf den Schirm zu bekommen, die sich auch 
noch korrekt verhalten müssen. Das alles ist zwar in fertigen 
Bibliotheken gekapselt, aber auch die wollen erst mal initialisiert, 
richtig angesprochen und korrekt verwendet werden. Und all das siehst du 
natürlich im Code (den möglicherweise ein Wizard generiert hat).

Autor: Niklas Braun (nikeldi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also, wenn ich eine ganz neue, unbearbeitete c-file erstelle, dann steht 
in den Zeilen:

/*
 * main.c
 * c-test001
 *
 * Created by Niklas Braun on 03.03.10.
 * Copyright 2010 _MyCompanyName_. All rights reserved.
 *
 * Compile on the command line as follows:
 * gcc -o "c-test001" c_test001.c main.c -lfuse
 *     -D_FILE_OFFSET_BITS=64 -D__FreeBSD__=10 -DFUSE_USE_VERSION=26
 */
#include "fuse.h"

extern struct fuse_operations c_test001_operations;

int main(printf("??/nDies ist ein Test.??/n");) {
  umask(0);
  return fuse_main(argc, argv, &c_test001_operations, NULL);
}

Das wars. In dem Buch habe ich leider keine Tipps gefunden, was das 
heißen könnte.

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sirenengeheul

Achtung, Trollalarm!  Nicht füttern!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Niklas Braun schrieb:

> Das wars. In dem Buch habe ich leider keine Tipps gefunden, was das
> heißen könnte.

Dazu wirst du auch in keinem allgemeinen C-Buch irgendetwas genaueres 
finden. Das ist alles XCode spezifisch.
Such dir ein Tuorial am Web, welches dich durch die ersten Schritte mit 
XCode bringt.

Für dich ist nur interessant, wo dein eigener Code hinmuss. Leider ist 
dieses Minimalframework schon so kryptisch (und ich würde sagen, dass 
ist noch nicht einmal richtiges C), dass man da noch nicht einmal 
erraten kann, wie sich die Apple Leute das vorgestellt haben.

Mit Sicherheit wird es darauf hinauslaufen, dass du diese Vorgabe erst 
einmal so akzeptierst wie sie ist und rausfindest, wo deine eigene 
Programmlogik hin muss. Normalerweise sieht ein C-Programm so aus

....

int main()
{
   .... hier dein Programmcode
}

aber bei deinem Schnipsel ist überhaupt nichts so wie es sein sollte.
Da wird dir nichts anderes übrig bleiben als:

Anderes Entwicklungssystem benutzen. Möglichst eines bei dem es noch 
möglich ist, normale Konsolenprogramme zu schreiben.

XCode Doku lesen: Würde mich wundern, wenn es in XCode keine Möglichkeit 
gäbe, nicht stink normale Konsolenprogramme (also ohne den ganzen 
graphischen Überbau) zu schreiben, die so geschrieben werden, wie C 
ursprünglich gedacht war.

Literatur zum Thema "C mit XCode" zu besorgen.

Autor: Mano Wee (Firma: ---) (manow)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Template ist sicher nicht von Apple. Nirgends wirst Du die Zeile
int main(printf("??/nDies ist ein Test.??/n");) {

finden.

Xcode starten -> File -> New Project -> unter Reiter Application 
"Command Line Tool" auswählen und wenn nötig Type auf "C" stellen. Den 
Choose-Knopf drücken und der Anweisung folgen. Das war's auch schon. Die 
main.c sieht so dann aus
#include <stdio.h>

int main (int argc, const char * argv[]) {
    // insert code here...
    printf("Hello, World!\n");
    return 0;
}

Autor: Lehrmann Michael (ubimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mano Wee schrieb:
> int main(printf("??/nDies ist ein Test.??/n");) {

Ein Funktionsaufruf (und noch dazu eine Main) in der ein printf 
übergeben wird. Haha das ist viel zu geil ! Sorry =)

Um mal jetzt ganz genau hinzukucken und mich in Kleinigkeiten zu 
verstricken:
Was sollte der Printf ausgeben: im Moment sieht das so aus:


??/nDies ist ein Test.??/n

ich nehme an rauskommen solle:

??
Dies ist ein Test.??

das müsste mann dann so schreiben

printf("??\nDies ist ein Test.??\n);

und zur übergabe:

funktion( hier stehen alle zu übergebenden variablen aus anderen 
Funktionen, durch Kommas getrennt ) {
....
Instruction Block
....
}

ein kleines Beispiel:

int main() {
 int x=2,y=1;
 ausgabe(x,y);
 return 0;
}

void ausgabe(int x, int y) {
 printf("%i",(x*2)+1+y);
}

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.