2
#include <iostream>
using namespace std;

void main(){
    char name[20];
    gets(name);
    cout<<name<<endl;
}

我在 google 中找不到答案,函数 gets() 是 C 还是 C++ 语言函数?因为在大学里我必须只使用 C++ 函数。

4

5 回答 5

4

C 函数是 c++ 函数的子集,但不,您可能不希望gets()在 c++ 项目中使用。

您可以考虑getline()operator>>为流。他们在大学里没有告诉你任何事情吗?

于 2011-11-29T13:46:54.943 回答
1

gets()是一个可以追溯到 1960 年代的 C 函数,它不进行边界检查并且被认为是危险的,多年来一直保持兼容性,仅此而已。

您的有效且推荐的 C++ 代码应为:

#include <iostream>
using namespace std;

int main(){
    // C style NULL terminated string NOT the same as a C++ string datatype 
    //char name[20];
    string name;// C++ string datatype, meant to use with C++ functions and features
    cin >> name;
    cout<<name<<endl;
    return 0;
}

您应该避免将 C 特定功能与 C++ 功能混合作为字符串数据类型/对象。有两种方法可以同时使用,但作为初学者,你应该坚持其中一种。

我个人的建议,先做C,然后过渡到C++。大多数 C++ 程序员不擅长纯 C,C 语言排在第一位,并被用作 C++ 的基础环境,但随着时间的推移,两者都以你可以想象的更多方式分开。

因此,除非您正在使用 C++ 同时学习面向对象,否则您将要做的就是使用 C++ 编译器在 C 中编写代码。与 C 相比,C++ 也非常庞大。模板和面向对象的编程工具是首先使用 C++ 的原因。

纯 C 仍然适用于许多事情,小巧而优雅。精通 C 比精通 C++ 更容易。C++ 已经发展到可以在不拘泥于任何开发团队同意的功能子集的情况下进行管理。

于 2011-11-29T16:01:09.513 回答
1

获取是 ac 函数

您可能正在寻找 istream/ostream/fstream 等。

参见例如:http ://www.cplusplus.com/reference/iostream/istream/read/

于 2011-11-29T13:47:40.570 回答
1

get 是 ac 函数,google 上的第一个链接为 gets。您可能应该查看 iostream 、 fstream 等中的函数

于 2011-11-29T13:49:11.993 回答
0

此示例无法编译,因为获取的标头是 cstdlib 及其 ac 函数。

于 2011-11-29T13:47:40.807 回答