Q:

Printing partial char arrays...with a twist

So I know there are a lot of questions about printing only segments of char arrays in C and I have read them and though my question is similar in nature, there is a small twist to mine. Given my code below, how do I only print out the first four characters of my fmt array? I am not allowed to alter fmt so therefore I must use VAL to specify that I just want to print  the value, the new line, and one space.
#define VAL 4
int main() {
   char fmt[10] = "%d\n   ";
   int value = 1;
   printf(fmt, value);
}

EDIT:
This is just a fraction of my code because I felt this was all that was necessary. If more is needed I will provide the rest of my code.
EDIT2:
Restrictions:
No new variables & must use VAL to specify how much of the fmt array to be printed.
EDIT3 (FULL QUESTION):
Fill in the missing part of the program, without adding any variable declarations. Ask the user to choose how s/he wants to print the entered integer value. (Look up the integer format specifiers for printf if you don't know them all.) Using the indicated format specifier letter print the integer that was entered earlier, followed by a return, and then reprompt for another format letter (though not for a new integer).
Getting under the complexity limit is a major part of the challenge. Be flexible about which type of loop you choose, and how you read in the format-specifier character. Also, note that scanf skips whitespace when reading a character, if there is a blank before the %c in the format string. And, there is an important use for that VAL define, involving getting rid of spurious blanks in the output. And finally, don't even think about doing this with a big switch or if-else block.
#include <stdio.h>
#define VAL 4  // You might want this

int main() {
   char fmt[10] = "%d\n   "; // Quickly initializes fmt array 
   int value;

   printf("Enter an integer: ");
   scanf("%d", &value);
   //from here below is my code, above code is pre-provided
   printf("Enter a format specifier (x, X, c, d, i, o, or q to quit): ");
   scanf(" %c", &fmt[1]);

   while (fmt[1] != 'q') {
      printf("%4s", fmt, value);
      printf("Enter a format specifier (x, X, c, d, i, o, or q to quit): ");
      scanf(" %c", &fmt[1]);
   }
}

A:

how do I only print out the first four characters of my fmt array

How about:
printf("%4s", fmt);

It doesn't work because I need the variable value to tell the %d in
  fmt what to print out

Options:

Print to a separate string (snprintf) using a length of 4
Process your number until it contains the appropriate number of digits and then print

A:

Adding to cnicutars very good answer, I'd just like to point out that if the array isn't const, you can alter it:
char saved = fmt[4];
fmt[4] = '\0';
printf (fmt, value);
fmt[4] = saved;

Edit

As I specified in my original question, the array cannot be altered.

Yes, well... I misread and thought the original const format string cannot be altered. Nevertheless, I think this tidbid of information can be useful to someone else.

