有人能告诉我为什么这个代码什么都不打印吗
Can someone please tell me why this code doesnt print anything?
我必须写一个代码来比较三个文本文件,但我一辈子都找不到为什么它不会打印任何东西:
#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;
)之前返回。通过在每个返回语句之前打印进度消息,使您的函数更加详细。
如前所述,返回太早。我修改你的代码:
- 我在if块和for块周围加了括号
- 我最后有一份退货声明
这是一个开始。例如,如果文件打开正确,则可能需要添加更多检查。
#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]。
相关文章:
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 按升序打印矢量的所有元素直到它为空而没有重复项的最有效方法是什么?
- 当我们声明 cin 为 int 并从 cin 中获取输入并在 cout 中打印 cin 时会发生什么?
- "1L << count"是什么意思?如何使用超出"unsigned long long int? "范围的语句编号打印?
- 打印一个带有静态 int 的函数,有一个 std::cout 和多个 std::cout 有什么区别?
- 在 c++ 中打印到控制台的最佳方式是什么?
- 这个随机字符串打印代码有什么问题?
- 当我打印字符串时,我不知道它是什么输出
- C++代码不打印信息,有什么问题?
- 我只是期望打印炭值.正在发生什么
- 打印矢量时最后的'%'是什么?
- 尝试使用类,但未打印任何内容.不会生成任何错误.我错过了什么吗?
- 打印此矩阵的 if 语句是什么
- 当我在C 中打印一个非初始化的变量时会发生什么
- 这个 c++ 程序中缺少什么?打印计算
- 打印函数会返回一个意外值,原因是什么
- 用"fprintf"打印错误后调用"getchar()"有什么意义?
- c++中使用的缩进和漂亮打印之间的区别是什么
- 从C++在预打印卡上打印的最简单方法是什么?
- 在打印之前将内容存储在内存中的目的是什么