моя программа неожиданно завершает работу, когда попадает в функцию `cin.getline ()` - PullRequest
0 голосов
/ 14 февраля 2020

Я написал программу, используя функцию getline().

код

Я думаю, что проблема в этой части:

    int encrypt(){
    int opt,limit;
    char inp[100],enc[100];
     cout<<"Choose the encryption type\n"
        <<"[1]Simple\n"
        <<"[2]complex\n"
        <<">>>";
    cin>>opt;
    if(opt==1){
    cout<<"Enter string to be encrypted :";
    cin.getline(inp,100);
    limit=strlen(inp);
    for(int i=0;i<limit;i++)
        {
        switch(inp[i])
                {
                case 'a' :  enc[i]='q';
                            cout<<enc[i];
                            break;

                ..........

Он печатает enter string to be encrypted и неожиданно выходит: p

Заранее спасибо

1 Ответ

0 голосов
/ 14 февраля 2020

cin.ignore () после cin >> opt должен выполнить работу (быстрое исправление). @Algirdas сослался на ссылку, которая дает вам более подробную информацию, потому что из-за новой строки вы получаете в потоке из-за ввода для выбора.

int encrypt(){
int opt,limit;
char inp[100],enc[100];
 cout<<"Choose the encryption type\n"
    <<"[1]Simple\n"
    <<"[2]complex\n"
    <<">>>";
cin>>opt;
if(opt==1){
cout<<"Enter string to be encryped :";
cin.ingore() #this can help in clearing the '/n' in stream
cin.getline(inp,100);
limit=strlen(inp);
for(int i=0;i<limit;i++)
    {
    switch(inp[i])
            {
            case 'a' :  enc[i]='q';
                        cout<<enc[i];
                        break;

            ..........

Попробуйте.

...