【问题标题】:How to output text without using cout/printf in cpp and c?如何在 cpp 和 c 中不使用 cout/printf 输出文本?
【发布时间】:2013-10-09 05:30:02
【问题描述】:

我的部分 cpp 代码如下所示:

void Error()
{
string line;
fperror.open("Error.txt");
while ( getline (fperror,line) )
{
  cout << line << endl;
}
fperror.close();

return;
}

它的 c 对应物是这样的:

void Error()
{
int c;
    fperror= fopen("Error.txt", "r");
c=getc(fperror);
while(c != EOF)
{
    putchar(c);
    c=getc(fperror);
}
fclose(fperror);
return;
}

这是我的班级项目,我们的教授告诉我们,我们不允许在函数中使用 cout/cin 或 printf/scanf。所以我想知道是否可以在不使用 cout/printf 的情况下输出文本文件的内容? (我们必须使用 void fun(void) 类型的函数)

【问题讨论】:

  • fread / fwrite?虽然如果这是一个 C++ 类,取缔 iostreams 是相当愚蠢的......
  • fgetsputsfwrite 等等。如果他们完全可以避免的话,你的教师需要了解没有人这样的代码。不适用于格式化输出。如果你想要 raw 输出,那么 hellyas.
  • 嗯。即使对于原始输出,与 std::cout &lt;&lt; fperror.rdbuf(); 之类的东西相比,C 的东西也相当丑陋

标签: c++ c printf cout


【解决方案1】:

您当然可以调用其他函数,但我怀疑您错过了重点。你的导师可能的意思是你的函数不应该打印任何东西本身。相反,它应该 返回 一些 调用者 然后打印的东西。您分配的部分目的可能是为了证明您了解return 语句的工作原理以及如何传递和接收函数参数。鉴于此,使用 any 函数来生成输出,而不仅仅是 printf 和 cout,将是一个错误。提到这两个是因为这些可能是你在课堂上学到的唯一东西,列举所有其他可能性可能会使学生感到困惑和不知所措,他们担心他们应该知道所有其他功能是什么。请咨询您的导师以确认。

【讨论】:

  • 实际上,她告诉我们使用四种不同类型的函数(没有在其中使用 cout/printf 特别),而我遇到的问题是函数不返回任何东西,同时也不接收任何东西。对于我这方面的初学者来说,如果函数不能接收和返回任何东西,我只能考虑让函数输出一些东西。
  • 现在你自相矛盾了。您刚刚说您应该使用这些功能,但在您的问题中,您说您不允许使用它们。再次,与你的导师确认你应该做什么。也许你应该使用 file
  • 我们应该使用它们(就像在四种不同类型的函数中一样);我说过我们不允许在所述函数中使用 cout/printf。另外,这就是我所做的,我使用了一个文件,但在 c++ 中,它仍然需要我使用 cout(至少我知道),这就是我在这里问的原因。
【解决方案2】:

你可以使用ofstream:

std::ofstream ofs("file.txt");
ofs << "text";   // This line outputs "text" to file

【讨论】:

    【解决方案3】:

    您可以在 C/C++ 中使用fwrite 显示您的输出

    例如:

    char buffer[] = "hello world"
    
    fwrite (buffer , sizeof(char), sizeof(buffer), stdout);
    

    【讨论】:

      猜你喜欢
      • 2017-07-29
      • 1970-01-01
      • 2010-10-14
      • 2017-04-25
      • 2020-05-08
      • 2013-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多