有人能告诉我为什么这个代码什么都不打印吗

Can someone please tell me why this code doesnt print anything?

本文关键字:什么 打印 代码 告诉我 为什么      更新时间:2023-10-16

我必须写一个代码来比较三个文本文件,但我一辈子都找不到为什么它不会打印任何东西:

#include <iostream>
#include <cstring>
#include <string>
#include <fstream>
using namespace std;
int main (int argc, char *argv[])
{
    ifstream mousefile;
    mousefile.open(argv[1]);
    string mouse_dna;
    getline(mousefile, mouse_dna);
    ifstream humanfile;
    humanfile.open(argv[2]);
    string human_dna;
    getline(humanfile, human_dna);
    ifstream unknownfile;
    unknownfile.open(argv[3]);
    string unknown_dna;
    getline(unknownfile, unknown_dna);
    int len = mouse_dna.size();
    int mouseDistance = 0, humanDistance = 0;
    for(int i=0; i<len; i++)
        if(mouse_dna[i] != unknown_dna[i])
            mouseDistance++;
            return mouseDistance;
    for(int i=0; i<len; i++)
        if(human_dna[i] != unknown_dna[i])
            humanDistance++;
            return humanDistance;

    double similarity_scoreH = (len - humanDistance) / len; 
    double similarity_scoreM = (len - mouseDistance) / len; 
    cout << "MouseCompare = " << similarity_scoreM << endl;
    cout << "HumanCompare = " << similarity_scoreH << endl;
    if (similarity_scoreH == similarity_scoreM)
        cout << "identity cannot be determined" << endl;
    else if (similarity_scoreH > similarity_scoreM)
        cout << "human" << endl;
    else if (similarity_scoreM > similarity_scoreH)
        cout << "mouse" << endl;

}

它编译得很好,没有任何错误,但当我把它改为:时

./DNA mouseDNA.txt humanDNA.txt unknownDNA.txt

它仍然没有任何作用。我感谢你的帮助。谢谢

它不打印任何内容,因为它在要打印的指令(return mouseDistance;return humanDistance;)之前返回。通过在每个返回语句之前打印进度消息,使您的函数更加详细。

如前所述,返回太早。我修改你的代码:

  1. 我在if块和for块周围加了括号
  2. 我最后有一份退货声明

这是一个开始。例如,如果文件打开正确,则可能需要添加更多检查。

#include <iostream>
#include <cstring>
#include <string>
#include <fstream>
using namespace std;
int main (int argc, char *argv[])
{
    ifstream mousefile;
    mousefile.open(argv[1]);
    string mouse_dna;
    getline(mousefile, mouse_dna);
    ifstream humanfile;
    humanfile.open(argv[2]);
    string human_dna;
    getline(humanfile, human_dna);
    ifstream unknownfile;
    unknownfile.open(argv[3]);
    string unknown_dna;
    getline(unknownfile, unknown_dna);
    int len = mouse_dna.size();
    int mouseDistance = 0, humanDistance = 0;
    for(int i=0; i<len; i++)
    {
        if(mouse_dna[i] != unknown_dna[i])
        {
            mouseDistance++;
        }
    }
    for(int i=0; i<len; i++)
    {
        if(human_dna[i] != unknown_dna[i])
        {
            humanDistance++;
        }
    }

    double similarity_scoreH = (len - humanDistance) / len; 
    double similarity_scoreM = (len - mouseDistance) / len; 
    cout << "MouseCompare = " << similarity_scoreM << endl;
    cout << "HumanCompare = " << similarity_scoreH << endl;
    if (similarity_scoreH == similarity_scoreM)
        cout << "identity cannot be determined" << endl;
    else if (similarity_scoreH > similarity_scoreM)
        cout << "human" << endl;
    else if (similarity_scoreM > similarity_scoreH)
        cout << "mouse" << endl;

    return 0;
}

使用arg[1]、arg[2]和arg[3]。您可能需要arg[0]、arg[1]和arg[2]。