0

我一直在尝试学习 C,但我一直坚持包含库。我需要使用 strcpy(),但该方法包含在 iostream 库中,但每当我尝试包含该库时,程序都会出错。我试过使用 "iostream", "iostream.h", , ,但它要么给我一个 "can't find iostream.h" 错误,要么程序超过 100 个错误并且只是崩溃。即使我的代码是空的,我仍然会得到同样的结果。这是代码:

#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);
}
4

3 回答 3

4

<iostream>是一个 C++ 标头(顾名思义,它处理输入/输出流)。如果你想strcpy,你需要<string.h>

于 2012-04-07T20:52:01.223 回答
1

如果您的源文件是“.c”,您所要做的就是将其重命名为“.cpp”。

然后它将编译为 C++,您将拥有 C++ 头文件,并且您将能够使用 C++ 流。

但是,我认为不需要 iostream。

strcpy 和朋友在“ <string.h>”中。只需包括它和“stdio.h”(就像你正在做的那样);删除“iostreams”#include ...生活应该很好。

于 2012-04-07T20:54:08.897 回答
0

iostreams 是仅限 C++ 的功能。s 头文件是用 C++ 编写的iostream,而不是 C。(是的,它们是不同的语言!)大概是在 C 模式下调用编译器,所以当编译器查看头文件时,它当然会抛出很多错误,因为中使用的许多结构iostream仅在 C++ 模式下才有意义。

如果您想使用iostreams,您必须在 C++ 模式下编译(并相应地以适当的现代 C++ 编写代码),使用仅 C 的不同库或通过根据需要实现自己的代码来解决它。

在这种情况下,您显然想要做的就是使用strcpy(). 那是在string.h, not中声明的iostream。(string.h是一个 C 头文件。)只要#include <string.h>它应该编译。

于 2012-04-07T20:51:56.523 回答