You don't need two loops, you can do it with one:
while ((c=fgetc(file))!=EOF)
{
my_board_dummy[i++] = c == '#' ? 10 : 11;
}
But... if your input file has lines, you would be better off doing two things:
1) Store the value of "n" in the file as the first line, and allocate exactly enough space for for the board when you read the size from the file. Make the board a two dimensional array, and you have an x and y coordinate to access each location. That makes the rest of your code a lot easier to work with.
2) Use two nested for loops instead of a while:
2.1) the output loop reads a whole line of text from the file, incrementing y.
2.2) the inner loop processes each line and converts the characters to board values, incrementing x. For each location you then have an x and y location to fill.
But ... minesweeper games aren't usually file based: you would normally fill a board with "empty" squares, then use a random number generator to select "n" locations that are mines and replace the empty square in each location with a mine value.
I'd also suggest that it's a good idea to make your board 2 squares larger in each direction than it needs to be, and fill that new area with "empty" squares. You then work with X and Y coordinates from 1 to n inclusive (instead of 0 to n - 1) and can access the user coordinate plus and minus one in both directions. That means when you are "looking for empty space" (a middle click in Windows Minesweeper) you don't have to check for edges at all, and that makes your code a lot cleaner.