I have a bit of code like here:
#define MAXSIZE 100
int main() {
char str[MAXSIZE+1];
scanf("%100s", str);
...
The problem is I still have "magic number" 100, although defined MAXSIZE. Is there a way to properly "insert" MAXSIZE into scanf format string? (pure C, c-99 standart)
There is, but you'd be better off using
fgets()
:The good thing about this (apart from an undoubted readability boost) is that
fgets()
takes care of the size correctly, i. e. it accounts for the terminating 0 character (whichscanf()
doesn't), so you don't have to hack around with adding one to the size when declaring your buffer. It also always NUL-terminates the array for you. Way less error prone.As to the original question: try the usual "stringify" trick:
But this is very ugly, isn't it?