输入文件有4个项目,但是该程序似乎在计算更多项目。我试图创建一个函数,该功能将计算文本文件中大写的项目。
#include<iostream>
#include<fstream>
using namespace std;
bool ckeckCap(char ch){
if((ch>='A')&&(ch<='Z')){
return true;
return false;
}
}
int main(){
ifstream inputFile;
char ch;
bool cap;
int capa=0;
int count=0;
inputFile.open("input.txt");
if(!inputFile.is_open()){
cout<<"Error opening...Aborting"<<endl;
return 0;
}
while(!inputFile.eof()){
inputFile>>ch;
cap=ckeckCap(ch);
if(cap==true)
capa=capa+1;
//inputFile>>ch;
}
cout<<capa;
return 0;
}
此:
bool ckeckCap(char ch){
if((ch>='A')&&(ch<='Z')){
return true;
return false;
}
}
应该是
bool ckeckCap(char ch){
if((ch>='A')&&(ch<='Z')){
return true;
}
return false;
}
在您的代码中,永远无法到达return false;
。如果条件的计算结果为false
,则不会从声明返回bool
的函数中返回。这会调用未定义的行为。
不是您的代码中的问题,但看起来可疑的是:
char ch;
bool cap;
在变量初始化之前使用变量是一个常见错误(也是UB)。可以通过仅在可以初始化变量时声明变量来避免它,否则,如果无法初始化,请使用一些值初始化它们,例如:
char ch = ' ';
bool cap = false;