2012-04-07 18 views
0

Ich habe versucht, C zu lernen, und ich bin dran, einschließlich Bibliotheken. Ich muss Strcpy() verwenden, aber diese Methode ist in der Iostream-Bibliothek enthalten, aber jedes Mal, wenn ich versuche, die Bibliothek einzuschließen, gibt mir das Programm Fehler. Ich habe versucht, mit "iostream", "iostream.h",,, aber es gibt mir entweder ein "kann nicht finden iostream.h" Fehler, oder das Programm überschreitet 100 Fehler und stürzt einfach ab. Auch wenn mein Code leer ist, bekomme ich immer noch das Gleiche. Hier ist der Code:Kann Iostream nicht in C mit MS Visual C++ einschließen?

#include "iostream" 

int main(void) 
{ 
} 

Yup, nur so viel macht es schon zum Absturz. Und hier ist ein Teil des Fehlers erhalte ich (sie nie alle hier einfügen könnte):

1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(37): error C2061: syntax error : identifier 'abs' 
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(37): error C2059: syntax error : ';' 
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(39): error C2061: syntax error : identifier 'acos' 
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(39): error C2059: syntax error : ';' 
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(39): error C2061: syntax error : identifier 'asin' 
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(39): error C2059: syntax error : ';' 
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(40): error C2061: syntax error : identifier 'atan' 
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(40): error C2059: syntax error : ';' 
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(40): error C2061: syntax error : identifier 'atan2' 
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(40): error C2059: syntax error : ';' 
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(40): error C2061: syntax error : identifier 'ceil' 
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(40): error C2059: syntax error : ';' 
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(41): error C2061: syntax error : identifier 'cos' 
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\cmath(41): fatal error C1003: error count exceeds 100; stopping compilation 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

Also ja, es übertrifft sogar die 100-Fehler und das Programm gerade nicht mehr zu zählen. Ich verstehe nicht warum, ich schließe nur eine normale Bibliothek ein. Gibt es ein Äquivalent von strcpy()? Ich wollte in erster Linie es so verwenden (für die Praxis):

#include "stdafx.h" 
#include "stdlib.h" 
#include "stdio.h" 
#include "conio.h" 
#include "iostream" 

int main(void) 
{ 
    struct person 
    { 
     int id; 
     char name[50]; 
     int age; 
    }; 

    struct person p1; 

    p1.id = 5595; 
    strcpy(p1.name, "Myname"); 
    p1.age = 18; 

    printf("%d%s%d", p1.id, p1.name, p1.age); 
} 
+0

beachten Sie, es gibt einen Unterschied zwischen Absturz und Reporting-Fehler:] ususally Compiler melden Fehler, selten stürzen sie – stijn

Antwort

4

<iostream> ist ein C++ - Header (es behandelt Eingabe/Ausgabe-Streams, wie der Name impliziert). Wenn Sie strcpy möchten, benötigen Sie <string.h>.

+0

Sofort löste es für mich. Vielen Dank! – ZimZim

+0

@ user1007059 - bitte markieren Oli Charlesworth's Beitrag "gelöst";) – paulsm4

+0

@ paulsm4, versuchte es, aber es sagte mir immer noch 10 Minuten warten ^^ aber jetzt habe ich: D – ZimZim

0

iostream s ist eine C++ - nur Funktion. Die Header-Datei iostream ist in C++ geschrieben, nicht in C. (Ja, das sind verschiedene Sprachen!) Vermutlich rufen Sie den Compiler im C-Modus auf. Wenn der Compiler die Header-Datei betrachtet, werden natürlich viele Fehler ausgegeben da viele der in iostream verwendeten Konstrukte nur im C++ - Modus sinnvoll sind.

Wenn Sie iostream s verwenden möchten, müssen Sie im C++ - Modus kompilieren (und in entsprechendem, modernem C++ entsprechend codieren), eine andere Bibliothek verwenden, die nur C-basiert ist oder umgehen, indem Sie Ihren eigenen Code implementieren.

In diesem Fall, alles, was Sie anscheinend tun möchten, ist strcpy() zu verwenden. Das ist in der string.h, nicht iostream erklärt. (string.h ist eine C-Header-Datei.) Nur #include <string.h> und es sollte kompilieren.

1

Wenn Ihre Quelldatei ".c" ist, müssen Sie nur ".cpp" umbenennen.

Dann wird es als C++ kompilieren, Sie werden die C++ - Header haben, und Sie können C++ - Streams verwenden.

Ich sehe jedoch keine Notwendigkeit für Iostreams.

Strcpy und Freunde sind in "<string.h>". Fügen Sie es einfach ein und "stdio.h" (wie Sie es tun); lösche die "iostreams" #include ... und das Leben sollte gut sein.