Языковая семантика не поддерживает то, что вы пытаетесь сделать.В C строка ни в коем случае не является типом первого класса - это просто массив char
, поэтому вся обработка строк выполняется через функции;вы не можете выполнять прямые операции над ними;и даже если бы вы могли сомневаться, умножение будет одним из них - он имеет очень ограниченный вариант использования, легко реализуемый с использованием более простых операций.
В этом случае вам на самом деле не требуется повторная репликация строки (или умножение по мере ее обращения), поскольку вы выводите строку напрямую, поэтому вам не нужно хранить строку и связанные с ней проблемы выделения памяти, которые влекут за собой,Скорее вам просто нужен повторный вывод строки.
#include <stdio.h>
void printRepeatString( const char* str, int n )
{
for( int i = 0; i < n; n++ )
{
printf( "%s", str ) ;
}
}
int main( void )
{
const int max = 10
for (int i = 1; i <= max; i++ )
{
printRepeatString( "*", (2 * i) - 1 ) ;
putchar( '\n' ) ;
}
return 0 ;
}