"File error!" appears on NXT, but why?
Most probably the problem is that the array is declared, but not initialized. The program does not know how much memory to allocate for this specific array and therefore there is no available storage in RAM for it.

To solve this, try initializing your array. You can either provide the starting dimensions during declaration, like in the last example here.
Which in your case would look like this:

char road[10][9];


And it will result in an array the given size, filled with zeroes.

Or use a function call to do the same if you have specific (not 0) initial values: http://bricxcc.sourceforge.net/nbc/nxcdoc/nxcapi/group___array_functions_ga49d48de55d817e96ed132eadc21260eb.html