【问题标题】:C - Multiply char by intC - 将 char 乘以 int
【发布时间】:2015-04-12 11:43:39
【问题描述】:

在我问我的问题之前,让我先说我是 C 的新手,并且不知道如何在其中做很多事情。

无论如何,问题是我需要打印特定数量的字符。我第一次使用 Python,因为那是我熟悉的语言,并且编写了这个非常简单的程序。

x = 5    
print('#' * x)

这是我想要实现的,但是在 C 中。如果这是一个重复或愚蠢的问题,我很抱歉,但我一直很困惑,没有答案,即使在互联网上查看后也是如此。

【问题讨论】:

  • 对不起,C 是低级系统语言。它甚至没有“字符串”作为数据类型。您必须自己做所有事情:分配一个字符数组,使用循环将字符复制到其中,甚至在末尾添加空终止符。没有捷径。

标签: c string int


【解决方案1】:

使用循环打印多次。

在 C 中,'' 之间的符号具有类型 char,一个字符,不是一个字符串。 char 是数字类型,与 int 相同,但更短。它包含符号的数字表示(ASCII 码)。将它与一个整数相乘得到一个整数。

包含在"" 之间的字符串是一个字符数组。该变量将存储一个指向第一个字符的指针

【讨论】:

  • 在 C 中,字符常量的类型为 int。你可能对 C++ 感到困惑。
  • 好吧,我可能过于简单化了。但是解释什么是实现定义的行为以及它应该如何为“ab”或多字节字符工作不属于这个问题。好奇的话,stackoverflow.com/questions/20764538/type-of-character-constant
  • @ftynse:字符常量的类型不是实现定义的。它总是int(C99,6.4.4.4p10);对于宽常量,它是 wchar_t (p11)。
  • @ftynse sizeof('a') == sizeof(int) - 这不是实现定义的行为问题。 "一个整数字符常量的类型为int。"
  • 尽管我为我的问题选择了另一个答案,但我确实喜欢你的解释。谢谢!
【解决方案2】:
for ( size_t ii = 0; ii < 5; ++ii )
    putchar('#');

【讨论】:

  • 以前从不知道 putchar 函数,谢谢!
【解决方案3】:

首先,使用 printf 函数。它允许您以您喜欢的方式格式化您的输出。获得所需结果的方法是 for 循环。

int i, x = 5;
for (i = 0; i < x; i++)
    printf("#");

【讨论】:

  • 在循环中使用printf 来打印单个字符是多余的;这里putchar 就足够了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-12
  • 2014-04-03
  • 1970-01-01
  • 1970-01-01
  • 2021-03-02
  • 2012-08-04
相关资源
最近更新 更多