这段代码有问题吗?

时间:2011-05-04 04:00:02

标签: c++

#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”来打印......

3 个答案:

答案 0 :(得分:1)

  

此代码有问题吗?

  1. 这是C ++而不是C.
  2. 缩进被打破。
  3. 每行坚持一句话。
  4. 它充满了无法解释的魔法常数。
  5. 首先排除这些问题,然后再问。

答案 1 :(得分:1)

让我们看看......

#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);

你是否在字符串末尾允许空格?此外,每个逗号后面还有一个空格。

int count = 0, C=0;

=等二元运算符周围的空格。此外,不鼓励使用单字母变量名称。

    output.open("finaltestOutput");

您已打开此文件。你为什么要再打开它?此外,还指出了命名输入文件流output

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

您在哪里获得了数字8051

可能还有更多;从那开始。

答案 2 :(得分:0)

在您的代码中,您在两个部分给出文件名扩展名的代码是attack.open("CattackList");而另一个是output.open("finaltestOutput");。可能是这导致文件无法打开并获得意外结果。