scanf / длины поля: с помощью переменной / макрос, C/C++

Как я могу использовать переменную для определения длины поля при использовании scanf. Например:

char word[20+1];
scanf(file, "%20s", word);

Кроме того, это корректно для использования 20+1 (так как это должно добавить \0 в конце?). Вместо этого я хотел бы иметь что-то как:

#define MAX_STRING_LENGTH 20

и затем

char word[MAX_STRING_LENGTH+1];
scanf(file, "%"MAX_STRING_LENGTH"s", word); // what's the correct syntax here..?

Действительно ли это возможно? Что было бы, если это - переменная как:

int length = 20;
char word[length+1];
scanf(file, "%" length "%s", word); // what's the correct syntax here..?

Спасибо.

5
задан user51231 21 July 2010 в 16:00
поделиться