2012-04-07 58 views
0

我一直在努力學習C,而且我被困在包含庫。我需要使用strcpy(),但是該方法包含在iostream庫中,但每當我試圖包含庫時,該程序都會給我提供錯誤。我嘗試過使用「iostream」,「iostream.h」,但它或者給我一個「無法找到iostream.h」的錯誤,或者程序超過100個錯誤,只是崩潰。即使我的代碼是空的,我仍然會得到同樣的結果。這裏的代碼:使用MS Visual C++不能在C中包含iostream?

#include "iostream" 

int main(void) 
{ 
} 

是的,只是這麼多,已經崩潰了。而這裏的我得到了錯誤的一部分(可能永遠不會把它們粘貼都在這裏):

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 ========== 

所以,是的它甚至超過了100個錯誤,程序只是停止計數。我不明白爲什麼,我只是包括一個普通的圖書館。有沒有相當於strcpy()?我主要是想用它像這樣(實踐):

#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

注意崩潰和報告錯誤之間存在差異:] ususally編譯器報告錯誤,很少崩潰 – stijn 2012-04-07 21:36:20

回答

4

<iostream>是一個C++頭(它處理輸入/輸出流,顧名思義)。如果你想strcpy,你需要<string.h>

+0

立即爲我解決它。非常感謝你! – ZimZim 2012-04-07 20:55:44

+0

@ user1007059 - 請標記奧利查爾斯沃思的帖子「解決」;) – paulsm4 2012-04-07 21:08:56

+0

@ paulsm4,試圖,但它一直告訴我等待10分鐘^^但現在我做了:D – ZimZim 2012-04-07 21:52:35

0

iostream s爲一個C++ - 唯一的功能。 iostream的頭文件是用C++編寫的,而不是C編寫的(是的,它們是不同的語言!)假定你在C模式下調用編譯器,所以當編譯器查看頭文件時,它當然會拋出很多錯誤因爲在iostream中使用的許多構造僅在C++模式下才有意義。

如果您想使用iostream s,您必須在C++模式下進行編譯(以及相應的現代C++代碼),可以使用不同的C語言庫,或者根據需要實現自己的代碼。

在這種情況下,您顯然想要做的就是使用strcpy()。這在string.h中聲明,而不是iostream。 (string.h是一個C頭文件。)只需#include <string.h>它應該編譯。

1

如果您的源文件是「.c」,您只需將其重命名爲「.cpp」即可。

然後它將以C++編譯,您將擁有C++頭文件,並且您將可以使用C++流。

但是,我沒有看到iostreams的任何需求。

Strcpy和朋友在「<string.h>」。只需包含它和「stdio.h」(就像你在做的一樣);刪除「iostreams」#包括...和生活應該很好。