Когда я вызываю функцию внутри функции, она пропускает код и завершает программу?

Это большая программа. Я скинул ненужный код. Я оставил только одну из ключевых функций

Когда я звоню ss(); в любой функции функция возвращает управление main() без принятия строки.
Код работает, если я не использую функцию для принятия строки. Я не могу найти ничего плохого в этом.

#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<ctype.h>
void ss();
void casechange();
using namespace std;
char str[100];
int main (){
int choice;

cout<<"Make a choice"<<endl;
cout<<"Press 1 to change the case of alphabets"<<endl;
cout<<"Press 2 to count number of vowels"<<endl;
cout<<"Press 3 to check if entered string is a palindrome or not"<<endl;
cout<<"Press 4 to reverse a string"<<endl;
cout<<"Press 5 to count number of words"<<endl;
cin>>choice;
switch(choice){
case 1: casechange();
break;
case 2: vowelcount();
break;
case 3:pal();
break;
case 4: rev();
break;
case 5: wordcount();
break;
default: cout<<"Wrong choice"<<endl;
}
return 0;
}
void casechange(){
ss();
for(int i=0;str[i]!='\0';i++)
{
if(isupper(str[i]))
str[i]=tolower(str[i]);
else str[i]=toupper(str[i]);
}
puts(str);
}
void ss()
{
cout<<"Enter a string"<<endl;
gets(str);
}

постскриптум Я использую блоки кода. компилятор gcc, я думаю.

0

Решение

Вы попросили пользователя сделать выбор. Пользователь набрал номер а также enter, Затем вы читаете один символ. enter все еще сидит там в буфере. Когда дело доходит до gets, он читает это как пустую строку.

Также, пожалуйста, обратите внимание на все комментарии о IO, gets и т.п.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]