计数字符,但代码计数错误,您能解释一下吗?

问题描述 投票:1回答:1

输入文件有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;
}
c++ char counting
1个回答
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;
© www.soinside.com 2019 - 2024. All rights reserved.