我应该使用fputs还是putchar?

时间:2017-02-27 16:27:55

标签: c string loops multidimensional-array fputs

以下是我的以下计划。我不想要换行,这就是我使用fputs()代替puts()

的原因
char words[5][6] = {"One", "Two", "Three", "Four", "Five"};
for (i = 0; i <= 4; i++)
   fputs(words[i], stdout);

我想知道这行代码是否足够安全,可以替代此代码。

for (i = 0; i < 5; i++)
{
   for (j = 0; j < 6; j++)
   if (words[i][j] != NULL)
      putchar(words[i][j]);
   else
      continue;
}

注意:我知道第二个代码部分的循环需要一些工作,特别是在if语句上,但我想知道整体输出。我问这个问题,因为在我的第一个问题上,我使用了gets()并被告知不要。所以我想避免使用不好的关键词。

4 个答案:

答案 0 :(得分:1)

  

我应该使用fputs还是putchar?

我建议您使用fputs作为目的,因为它可以实现您的目标,而无需重新发明轮子。

你使用putchar的第二种方法也会起作用,但为什么要重新发明轮子呢?但是,如果由于某些原因必须使用putchar,则需要将continue替换为break以在遇到标记字符串结尾的null character时突破内循环

答案 1 :(得分:0)

gets本质上是不安全的(并且在2011年又从C标准中删除),fputs不是。我发现使用fputs的代码没有任何问题。

答案 2 :(得分:0)

fputs可以安全使用。正如你所说,gets没有任何好处。

答案 3 :(得分:0)

putsfputs在这种情况下都是安全的。你的选择只是fputs的(坏)C翻译。这是错误的,因为你在空字符后继续循环。如果出于任何原因,在第一个null之后存在垃圾(来自前一个较长的字符串),您将使用它。

无论如何,标准库中的函数可能已经过优化,因此您应尽可能使用它们。