如何在 C 中使用 `for` 循环打印符号 `n` 次?

How to print a symbol `n` times using a `for` loop, in C?

是否可以在 C 中使用 for 循环打印“#”n 次?

我习惯print(n * '#')在Python。

在 C 语言中是否有等效项?

for(i=0; i < h; i++) {
    printf("%s\n", i * h);
}

要在 for 循环中输出符号 '#' n 次,无需动态创建字符串。效率会很低。

只需使用标准函数putchar like

for ( int i = 0; i < n; i++ )
{
    putchar( '#' );
}
putchar( '\n' );

这是一个演示程序。

#include <stdio.h>

int main(void) 
{
    const char c = '#';
    
    while ( 1 )
    {
        printf( "Enter a non-negative number (0 - exit): " );
        
        unsigned int n;
        
        if ( scanf( "%u", &n ) != 1  || n == 0 ) break;
        
        putchar( '\n' );
        
        for ( unsigned int i = 0; i < n; i++ )
        {
            for ( unsigned int j = 0; j < i + 1; j++ )
            {
                putchar( c );
            }
            putchar( '\n' );
        }
        
        putchar( '\n' );
    }
    return 0;
}

程序输出可能看起来像

Enter a non-negative number (0 - exit): 10

#
##
###
####
#####
######
#######
########
#########
##########

Enter a non-negative number (0 - exit): 0

如果您需要在文件流中发送符号,请使用函数

int fputc(int c, FILE *stream);

而不是 putchar

没有。标准 C 中的任何机制都是不可能的。如果你想要一些 sub-string 重复 n 次的字符串,你将不得不自己构造它。

简单示例:

const char *substring = "foo";

// We could use `sizeof` rather than `strlen` because it's
// a static string, but this is more general.
char   buf[8192];
size_t len = strlen(substring);
char  *ptr = buf;

// Ideally you should check whether there's still room in the buffer.
for (int i = 0; i < 10; ++i) {
    memcpy(ptr, substring, len);
    ptr += len;
}
*ptr = '[=10=]';

printf("%s\n", buf);

是,使用 %.*s 格式说明符。

int h = 10; //upper limit
char pat[h*h];

memset(pat, '#', sizeof pat);

for (int i=0;i<h;i++)
{
  printf("%.*s\n",i*h, pat);
}

输出:

##########
####################
##############################
########################################
##################################################
############################################################
######################################################################
################################################################################
##########################################################################################

如果我误解了你的问题,请原谅。