当我在一个函数中调用一个函数时,它会跳过代码并终止程序吗?
When I call a function within a function it skips code and terminates program?
好大的节目。我去掉了不必要的代码。我只留下了其中一个关键函数
当我在任何函数中调用 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]!='[=10=]';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);
}
p.s。我正在使用代码块。我猜是 gcc 编译器。
您要求用户做出选择。用户键入了一个数字 和 enter
。然后你读一个字符。 enter
仍然坐在缓冲区中。当涉及到 gets
时,它会将其读取为空字符串。
另外请关注所有关于IO的评论,gets
等
好大的节目。我去掉了不必要的代码。我只留下了其中一个关键函数
当我在任何函数中调用 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]!='[=10=]';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);
}
p.s。我正在使用代码块。我猜是 gcc 编译器。
您要求用户做出选择。用户键入了一个数字 和 enter
。然后你读一个字符。 enter
仍然坐在缓冲区中。当涉及到 gets
时,它会将其读取为空字符串。
另外请关注所有关于IO的评论,gets
等