这个代码有什么问题吗?

Is there any problem with this code?

本文关键字:问题 什么 代码      更新时间:2023-10-16
#include<iostream>
#include<fstream>
#include<cstring>
using namespace std;
int main()
{
    cout << "Hello.";
    ifstream attack,output;
    attack.open("CattackList");
    output.open("finaltestOutput.txt");
    if (!attack)
        cout << "file1 not opened.n";
    if (!output)
        cout << "file2 not opened.n";
    char buf1[100],buf2[100];
    attack.getline(buf1,100);
    int count = 0, C=0;
    cout << "hello";
    while (!attack.eof())
    {
        C++;
        cout << "ok";
        output.open("finaltestOutput");
        while (!output.eof())
        {
            output.getline(buf2, 80);
            if (strncmp(buf1, buf2, 51) == 0)
            {
                cout << buf2 << endl;
                count++;
            }
        }
        attack.getline(buf1, 80);
    }
    cout << "nTotal Attacks : " << C << endl;
    cout << "Attacks detected: " << count << endl;
    return 0;
}

我连第一个"Hello"都打印不出来

让我看看…

#include<iostream>
#include<fstream>
#include<cstring>

请在每个#include后面加空格。

if (!attack)
    cout << "file1 not opened.n";
if (!output)
    cout << "file2 not opened.n";

错误信息应该转到cerr,而不是cout

char buf1[100],buf2[100];
attack.getline(buf1,100);

您是否允许在字符串末尾为null留出空间?还有,每个逗号后面有一个空格。

int count = 0, C=0;

二进制运算符(如=)周围的空格。此外,不鼓励使用单字母变量名。

    output.open("finaltestOutput");

您已经打开了这个文件。你为什么又打开了?此外,对于将输入文件流命名为output,还需要注意。

        output.getline(buf2, 80);
        if (strncmp(buf1, buf2, 51) == 0)

你从哪里得到8051这两个数字的?

可能还有更多;

这个代码有什么问题吗?

  1. 是c++,不是C。
  2. 缩进被打破
  3. 每行坚持一条语句
  4. 它充满了无法解释的魔法常数。

先把这些问题整理出来,然后再问。

在你的代码中,你在两个部分给出了文件名扩展名,一个是在attack.open("CattackList");,另一个是在output.open("finaltestOutput");