You want to get real familiar with a handy-dandy 3D math operation called Dot Product. Pretty much all 3D graphics libraries include this 3D math function; for example http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.vector3.dot.aspx
The dot product can be used for a number of things, but every use boils down to: when you take the dot product of two vectors, the resulting number tells you how close they are to pointing in the same direction. Exactly the same direction results in 1, perpendicular gives 0, and exactly opposite directions gives -1.
For this specific problem, one vector is the direction the camera is facing, and one vector is the direction from camera to a block (subtract the position of the block from the position of the camera). Get the dot product of these two vectors, and if the result is close to 1 then the camera is pointed at that block. Do this in a loop for all the blocks.
I should mention, the more general method for detecting geometry at a specific camera position is to use raycasting, shooting a ray out from the camera. For example, this link explains how to cast a ray from the camera in XNA http://www.enchantedage.com/xna-picking
Such an approach is unnecessarily expensive for a 2D grid of blocks, but would be necessary for a 3D grid of blocks. You didn't specify this in your question, so I assumed "an array of block positions" meant a 2D grid but just realized you may have meant a 3D grid.
The issue is that you don't only need to determine what blocks are being faced; you also need to determine which faced block is nearest. In a 2D grid this is a non-issue since all of the blocks lie on the same plane. However in a 3D grid many blocks overlap each other, which means there could be multiple overlapping blocks all in the direction the camera points toward. Raycasting will detect the first block hit.