gets()未在范围中声明

时间:2018-03-13 05:45:19

标签: c++ ubuntu g++

我尝试过很多东西但没有结果。我使用<cstdio>但没有帮助。 我再次尝试使用fget,但没有得到任何好结果。我使用在线编译器http://rextester.com/l/cpp_online_compiler_gcc

#include <iostream>
#include <string.h>
#include<stdio.h>
#include<cstdio>
using namespace std;
int main() {
    bool check;
    char sntn[100],word[100],test[20];
    gets (word);
    gets (sntn);
    int j=0,count=0,val,k;
    check=true;
    while(check) {
        for(; sntn[j]==32; j++) {
            test[k]=sntn[j];
            k++;
        }
    }
    k=0;
    j+=1;
    val=strcmp(test,word);
    if(val==0)
        count++;
    if(sntn[j]==32) {
        j+=1;
        check=true;
    }
    if(sntn[j]=='\0')
        check=false;

    cout<<endl<<count;
    return 0;
}

错误:

source_file.cpp: In function ‘int main()’:
source_file.cpp:9:11: error: ‘gets’ was not declared in this scope
 gets (word);
           ^

1 个答案:

答案 0 :(得分:2)

std::gets()已在C ++ 11中弃用,在C ++ 14中已删除。在线编译器必须使用该语言的C ++ 14或更高版本。

更重要的是,gets已知是一个安全问题。即使编译器支持它也不要使用它。请改用std::fgets()

除非您需要使用<cstdio>标题中的函数,否则std::string还有更好的选择。

  1. std::getline()
  2. std::istream::getline()
  3. 这些链接包含让您入门的示例代码。