gets()被认为是C函数还是C ++函数?

时间:2011-11-29 13:45:34

标签: c++ c gets

#include <iostream>
using namespace std;

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

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

5 个答案:

答案 0 :(得分:4)

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

您可以考虑使用getline()operator>>作为流。他们没有在大学里告诉你任何关于它的事吗?

答案 1 :(得分:1)

gets是一个c函数

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

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

答案 2 :(得分:1)

gets是一个c函数,First link on google for gets。 您应该查看iostream,fstream等中的函数

答案 3 :(得分: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 ++的原因。

Pure C对很多东西来说仍然很棒,小而优雅。它比C ++更容易熟练使用C语言。在不遵守任何开发团队同意的一部分功能的情况下,C ++已经发展得非常易于管理。

答案 4 :(得分:0)

此示例将无法编译,因为gets的标头是cstdlib及其c函数。