我应该使用 fputs 还是 putchar?
Should I use fputs or putchar?
下面是我的程序。我不想换行,这就是为什么我使用 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()
并且被告知不要这样做。所以我想避免不好的关键字可以这么说。
gets
本质上是不安全的(并在 2011 年从 C 标准中移除),fputs
不是。我认为您使用 fputs
.
的代码没有任何问题
fputs
可以安全使用。 gets
正如你所说,不好。
puts
和 fputs
在这种情况下都是安全的。您的选择只是 fputs
的(错误的)C 翻译。这是错误的,因为您在空字符后继续循环。如果出于任何原因,在第一个 null 之后存在垃圾(来自先前的较长字符串),您将使用它。
无论如何,标准库中的函数可能会被优化,因此您应该尽可能使用它们。
Should I use fputs or putchar?
我建议您根据自己的目的使用 fputs
,因为它可以实现您的 objective,而无需重新发明轮子。
您使用 putchar
的第二种方法也可以,但为什么要重新发明轮子呢?但是,如果由于某些原因必须使用 putchar
,则需要将 continue
替换为 break
以在遇到标记字符串结尾的 null character
时跳出内部循环.
下面是我的程序。我不想换行,这就是为什么我使用 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()
并且被告知不要这样做。所以我想避免不好的关键字可以这么说。
gets
本质上是不安全的(并在 2011 年从 C 标准中移除),fputs
不是。我认为您使用 fputs
.
fputs
可以安全使用。 gets
正如你所说,不好。
puts
和 fputs
在这种情况下都是安全的。您的选择只是 fputs
的(错误的)C 翻译。这是错误的,因为您在空字符后继续循环。如果出于任何原因,在第一个 null 之后存在垃圾(来自先前的较长字符串),您将使用它。
无论如何,标准库中的函数可能会被优化,因此您应该尽可能使用它们。
Should I use fputs or putchar?
我建议您根据自己的目的使用 fputs
,因为它可以实现您的 objective,而无需重新发明轮子。
您使用 putchar
的第二种方法也可以,但为什么要重新发明轮子呢?但是,如果由于某些原因必须使用 putchar
,则需要将 continue
替换为 break
以在遇到标记字符串结尾的 null character
时跳出内部循环.