#include<bits/stdc++.h>
using namespace std;
//function to check for substring in a string
int check(const char* str,const char* substring)
{
char* pos = strstr(str,substring);
if(pos)
return 1;
else
return 0;
}
int main(){
int t;
cin>>t;
while(t--)
{
char inp [100000];
cout<<"Enter String:";
gets (inp);
int rec,total=-1;
puts(inp);
rec = check(inp,"010");
total = rec;
rec = check(inp,"101");
total = total +rec;
if(total>0)
cout<<"GOOD"<<endl;
if(total==0)
{
cout<<"BAD"<<endl;
}
}
return 0;
}
Функция вызывался в два раза для каждой итерации вызова от времени loop.In первой итерации цикла While, вызов, чтобы проверить функцию() происходит без ввода inp, считая его пустой строкой. В дальнейших итерациях inp берется у пользователя, и все начинает работать должным образом.получает() не работает в первой итерации цикла, но работая в последующих итерациях
Обязательно: никогда не используйте 'std :: gets' в любой реальной программе и, желательно, забывайте обо всем остальном, за исключением того, что вы никогда не должны его использовать. Потому что любая программа, использующая 'gets', может быть тривиально разбита (или даже использована,« взломана ») путем ввода пользователем. Кроме того, он был удален * из последнего стандарта C++. http://en.cppreference.com/w/cpp/io/c/gets – hyde
Не знал об этом. Спасибо :) – rakeysh