Q: Как в название файла добавлять значение счетчика i #include <stdio.h>
#include <stdlib.h>

int main()
{
    int n;
    printf("How much create a file?: ");
    scanf("%i",&n);

    for(int i = 0;i < n; i++);
    {
        FILE* file = fopen("test.txt","w");

        for(int j = 0;j < n;j++)
        {
            fprintf(file, "С is the best\n" );
        }
    }
    printf("Successfully Created");
}


A: Из примера вашего кода не слишком понятно, что  именно вы делаете, но динамически создавать имена файлов можно с помощью функции snprintf.
Например, вот так:
....
for(int i = 0;i < n; i++);
{
    char name[NAME_MAX + 1];
    snprintf(name, NAME_MAX, "test_%d_.txt", i);
    FILE* file = fopen(name,"w");
....

В POSIX (*nix) операционных системах обычно существует файл limits.h, в котором определено много   констант, характеризующих данную ОС (включая широко известные INT_MAX, INT_MIN и т.п.). 
Среди них -- NAME_MAX (максимальный размер имени файла, не включая завершающий \0) и PATH_MAX (максимальный размер полного пути с именем файла, включающий завершающий \0).  
Хорошей практикой для написания переносимого (portable) кода будет включать этот файл (#include <limits.h>) и использовать определенные там константы.
Еще один вариант динамического создания имен файлов -- использовать функцию asprintf (в GNU "из коробки", для других систем ее несложно реализовать самому на основе vsprintf).
.....
char *name;
asprintf(&name, "test_%d_.txt", i);
// теперь в переменной name указатель на динамически выделенную (по malloc) память,
// содержащую сформированное имя файла
FILE* file = fopen(name,"w");
....
free(name); // освободим память, когда имя больше не нужно 
.....


A: В C нужно будет вручную привести строку к заданному виду. Допустим, всем файлам мы хотим дать название test_N.txt, где N — наш счетчик. Тогда наиболее предпочтительным вариантом будет использовать функцию snprintf:
/* Подготавливаем строку: */
char buffer[1024];
snprintf(buffer, sizeof buffer, "test_%d.txt", i);

/* Открываем файл с заданным именем: */
FILE *file = fopen(buffer, "w");

В примере выше размер буфера определяется как 1024. В принципе, такого размера вполне достаточно для любого значения счетчика. Однако 1024 слишком нестрогое ограничение сверху. Максимальное значение типа int — INT_MAX по стандарту равно +32767. Однако реализации в праве увеличить этот максимум. Тогда приемлемым вариантом будет в качестве максимального значения взять 2147483647, так как практически на всех машинах это и есть максимальное значение типа int. Тогда размер буфера будет считаться как количество цифр в 2147483647 + длина строки "test.txt": 18 (+1 для нуль-терминатора).
char buffer[19];

Хотя, конечно, в вашем варианте кода будет ограничение на количество одновременно открытых файлов. Поэтому каждый файл, после работы с ним, нужно закрывать.

A: Развивая идеи с размером буфера - можно воспользоваться тем, что при передаче NULL в sprintf возвращается необходимый размер...
const char *fmt = "test_%d.txt";
int sz = snprintf(NULL, 0, fmt, i);
char buf[sz + 1]; 
snprintf(buf, sz + 1, fmt, i);
FILE* file = fopen(buf,"w");

