В этом коде getline не работает для i = 1. Но для i = 0 он работает полностью нормально. Что я должен делать, чтобы многократно работать с функцией getline. Этот код принимает число и проверяет его делимость. «Numb» берется для хранения номера. Для i = 0 все вычисления просто прекрасны, но когда он идет на второй поворот, не знаю, что происходит, но cin.getline не работает.cin.getline() не работает при вызове во второй раз
#include <iostream>
#include <cstring>
#include <iomanip>
#include <cstdio>
#include <cstdlib>
#define MAX 1050
using namespace std ;
int call_div (char *num ,long div)
{
int len =strlen (num) ;
int now ;
long extra ;
for (now = 0,extra=0; now < len; now += 1)
{
extra = extra *10 + (num [now] -'0') ;
extra = extra %div ;
}
return extra ;
}
int main (int argc, char const* argv[])
{
int testcase,numbers ,flag =0;
char numb[MAX] ;
cin >> testcase ;
getchar() ;
for (int i = 0; i < testcase; i += 1)
{
cout << i << endl ;
int div[14] ;
cin.getline(numb) ; // i= 0 ,it works fine ,i=1 ,it doesn't work
cin >> numbers ;
for (int j = 0; j < numbers; j += 1)
{
cin >> div[j] ;
}
for (int k = 0; k < numbers; k += 1)
{
// cout << div[k]<< ' ' << call_div (numb,div[k]) << endl ;
if (call_div (numb,div[k])==0)
{
flag = 1 ;
}
else {
flag = 0 ;
break;
}
}
if (flag==0)
{
cout << "simple"<< endl ;
}
else
cout << "wonderful" << endl ;
}
return 0;
}
1. Используйте 'std :: getline'. 2. http://stackoverflow.com/search?q=%5Bc%2B%2B%5D%20getline%20skipping – chris
Можете ли вы опубликовать вывод, который вы в настоящее время получаете, и что вы ожидаете? (и ваши входы) –
'char numb [MAX];', за которым следует непроверенная 'getline (cin, numb);' - переполнение буфера, которое должно произойти. Было бы лучше использовать 'std :: string'. –