# [C] C mit Visual Studio?



## Ozonschicht (30. September 2010)

Hallo,
Ich verstehe nicht ganz wie ich in Visual Studio eine C Datei schreiben kann, es gibt nur den Berreich C++. Habe gelesen das man eine WIN32-Konsolenanwendung benutzen muss. Leider ist es aber eine Datei mit .cpp am ende, brauche was mit .c endet... Sonst wird <stdio.h> nicht gefunden.
So eine Fehlermeldung kommt wenn ich mit Win32-konsolenanwendung Debuggen möchte 

```
fatal error C1010: Unerwartetes Dateiende während der Suche nach dem vorkompilierten Header. Haben Sie möglicherweise vergessen, im Quellcode "#include "StdAfx.h"" einzufügen?
```
So lautet das eigentliche Code: (Bing gerade am lernen und ist vom Buch )

```
#include <stdio.h>
main() {
	printf("\nDies ist ein erstes C-Programm. \n");
	printf("\Wie Sie sehen, kann `Prinftf` ");
	printf("nicht nur Texte drucken,\n");
	printf("sondern auch rechnen.\n\n");
	printf("13 * 7 = %i \n",13 * 7);
}
```

Danke im vorraus.
( Die ersten Seiten und schon das 1. Problem  )


----------



## deepthroat (30. September 2010)

Hi.

Dann füge doch deinem Projekt einfach eine .c Datei hinzu... (man kann auch für jede Datei einzeln einstellen ob der Code als C oder C++ behandelt werden soll)

Übrigens ist dein Code kein gültiges C und kein gültiges C++.

Die main() Funktion muß int zurückgeben! (Hast du das aus einem Buch? Dann wirf es weg, leih dir ein besseres)

Die Fehlermeldung bezog sich auf vorkompilerte Header (das hat nichts mit stdio.h zu tun).

Schalte in deinem Projekt vorkompilierte Header aus oder stelle sicher, dass als erstes _#include "stdafx.h"_ in der Datei steht.

Und hast du mal nach "C1010" gesucht? Es soll auch helfen die Fehlermeldung mal zu lesen...

Gruß


----------



## Ozonschicht (30. September 2010)

deepthroat hat gesagt.:


> Hi.
> 
> Dann füge doch deinem Projekt einfach eine .c Datei hinzu... (man kann auch für jede Datei einzeln einstellen ob der Code als C oder C++ behandelt werden soll)


Wie den?



deepthroat hat gesagt.:


> Übrigens ist dein Code kein gültiges C und kein gültiges C++.
> 
> Die main() Funktion muß int zurückgeben! (Hast du das aus einem Buch? Dann wirf es weg, leih dir ein besseres)


Ich habe das Buch von Amazon gekauft (http://www.amazon.de/C-Programmieren-Anfang-Helmut-Erlenkötter/dp/3499600749), ich denke mal ich mache was falsch, wie muss es den dan richtig heißen? Ich komm nicht ganz klar was ich auswählen soll beim Projekt erstellen ...

EDIT:
So funktioniert es:

```
#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
	printf("\nDies ist ein erstes C-Programm. \n");
	printf("\Wie Sie sehen, kann `Prinftf` ");
	printf("nicht nur Texte drucken,\n");
	printf("sondern auch rechnen.\n\n");
	printf("13 * 7 = %i \n",13 * 7);
	return 0;
}
```


----------



## Matthias Reitinger (30. September 2010)

Hallo Ozonschicht,

am besten achtest du beim Erstellen des Projektes darauf, dass du „Leeres Projekt“ ankreuzt. Dann kannst du deine Quelldateien manuell hinzufügen.

Grüße,
Matthias


----------



## Ozonschicht (30. September 2010)

Wenn ich ein leeres Projekt erstelle habe ich leider kein Textfeld, wie kann ich es erstellen? Damit ich was reinschreiben kann?
Und ich habe das Problem das sich beim Debuggen das geschriebene Code nicht mal eine Sekunde zeigt und sich wieder schließt. Wie kann ich ein Timer einstellen oder das es auch so für immer bleibt?

Das buch ist schon richtig:
http://www2.hs-fulda.de/~klingebiel/c-stdlib/index.htm
<stdio.h> gibt es in der C Bibliothek leider nicht in Visual Studio ? -.-


----------



## sheel (30. September 2010)

"Textfeld"? Meinst du den Bereich, wo du den Code hinschreibst?

Wenn du ein leeres Projekt erstellst, hast du natürlich noch keine c/cpp-Dateien dabei, deshalb ist es ja "leer".
Sobald du ein leeres Projekt hast, rechte Maustaste auf den Verzeichnisbaum, Hinzufügen, Neu...
Je nach Version könnte es anders sein, ich bezieh mich hier auf 2008

Wegen dem Schließen: Das ist normal. Wenn das Programm fertig ist, schließt es sich eben.
Möglichkeiten zu warten gibt es viele, zB auf die stdio.h bezogen die Funktion getchar() am Schluss einfügen.
Dann gehts erst zu, wenn du Enter drückst.

Und stdio.h gibt es ganz sicher in Visual Studio :suspekt: Warum sollte es nicht da sein?


----------



## Ozonschicht (30. September 2010)

Wo muss ich #include "stdio.h" einfügen damit es auch unter stdio.h sucht?
Habe mal gegoogelt und irgendwo stand das man in die Datei stdafx.h reinschreiben soll. Hat leider mir nichts gebracht.


----------



## sheel (30. September 2010)

Am besten schaltest du dir vorkompilierten Header erstmal ab, so wie dir schon deepthroat geraten hat.
Dann kannst du das include"stdafx.h" auch weglassen.

Und das stdio.h kommt einfach in deine Quellcodedatei, wo zuerst auch die stdafx.h eingebunden wurde.

Nimm statt "" <>, also
#include<stdio.h>


----------



## Ozonschicht (30. September 2010)

sheel hat gesagt.:


> Am besten schaltest du dir vorkompilierten Header erstmal ab, so wie dir schon deepthroat geraten hat.
> Dann kannst du das include"stdafx.h" auch weglassen.
> 
> Und das stdio.h kommt einfach in deine Quellcodedatei, wo zuerst auch die stdafx.h eingebunden wurde.
> ...


 
Also ich gehe immer neues Projekt -> Leeres Projekt -> Header Löschen -> Quelldatei hinzügen - Neues element - Was dann? Ich kann nur C++ und kein C auswählen. Ich will das die endung .C ist und nicht .CPP.

Und kann mir jemand eine Funktion sagen damit es nach dem Ausführen des Programms nicht sofort schließt?
Habe getchar() gefunden, bringt aber nichts -.-

EDIT:
Okey, das mit dem Schließen habe ich hinter mir 
System("PAUSE") funktioniert doch 
Rest ist auch bis jetzt geklärt, werde morgen nochmal gucken ob alles klappt wie ich es mir vorstelle 
Danke das ihr Zeit für mich genommen habt.


----------



## sheel (30. September 2010)

Welche Version verwendest du?

Schritt für Schritt im 2008:
Datei-Neu-Projekt
Visual C++ - Win32
Win32-Konsolenanwendung
Name und Speicherort angeben
OK
Weiter
Den Haken bei "Vorkompilierte Header" rausnehmen, falls einer drin ist
Bei "Leeres Projekt" einen Haken rein, falls noch keiner ist
Im "Projektmappenexplorer" mit der rechten Maustaste auf den Projektnamen klicken, Hinzufügen, Neues Element, "C++-Datei"
Den Dateinamen unten eingeben und hinter den Namen noch ein ".c" dazuschreiben
OK

Das Ganze ist im Visual Studio leider etwas umständlich; muss aber bei jedem Programm ja nur einmal am Anfang gemacht werden.

Eine Frage hätt ich aber: Was macht es für dich für einen Unterschied, ob c oder cpp im Dateinamen steht?
Es gibt schon Situationen wo man mit .c besser dran ist als mit .cpp, aber du beginnst ja erst mit der Sprache.

Fürs erste sollte es bei deinen Programmen keinen Unterschied machen, wie die Datei benannt ist.


----------

