C语言 - 字符乘以整数

8
在我提出问题之前,先声明一下,我是C语言的新手,不太懂得很多东西。
无论如何,问题是我需要打印出特定数量的字符。我最开始使用了Python,因为那是我熟悉的语言,并编写了这个非常简单的程序。
x = 5    
print('#' * x)

我想在C语言中实现这个功能,但不知道该怎么做。很抱歉如果这是一个重复或愚蠢的问题,但即使在网上搜索后也没有找到答案。


1
抱歉,C语言是一种低级系统语言。它甚至没有“字符串”这种数据类型。你必须自己完成所有操作:分配一个字符数组,用循环将字符复制到其中,甚至在末尾添加空终止符。没有捷径可走。 - Lee Daniel Crocker
3个回答

5
for ( size_t ii = 0; ii < 5; ++ii )
    putchar('#');

之前从未听说过putchar函数,谢谢! - Argarak

4
使用循环多次打印它。
在C中,两个引号之间的符号具有类型char,表示字符,而不是字符串。 char是一个数字类型,与int相同但更短。它保存符号的数字表示(ASCII码)。将其与整数相乘会得到一个整数。
用引号括起来的字符串""是由字符组成的数组。变量将存储指向第一个字符的指针。

6
在C语言中,字符常量的类型是int。你可能和C++混淆了。 - Grzegorz Szpetkowski
1
嗯,我可能过于简化了。但是关于什么是实现定义行为以及它如何适用于“ab”或多字节字符的解释并不属于这个问题。 对于好奇的人,可以参考https://dev59.com/3XrZa4cB1Zd3GeqP4psc - ftynse
1
@ftynse:字符常量的类型不是实现定义的。它始终是int(C99,6.4.4.4p10);对于宽字符常量,它是wchar_tp11)。 - Tim Čas
1
@ftynse sizeof('a') == sizeof(int) - 这不是一个实现定义的行为问题。 "整数字符常量的类型为int。" - chux - Reinstate Monica
尽管我选择了另一个答案来回答我的问题,但我确实喜欢你的解释。谢谢! - Argarak

0
首先,使用printf函数。它允许您以所需的方式格式化输出。获得所需结果的方法是使用for循环。
int i, x = 5;
for (i = 0; i < x; i++)
    printf("#");

在循环中使用 printf 来打印单个字符有些浪费,这时候可以使用 putchar - Arkku

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接