Если все, что вы хотите сделать, это передать содержимое файла на стандартный вывод, вы можете использовать потоковый итератор, например, так:
#include <iostream>
#include <iterator>
#include <fstream>
#include <algorithm>
#include <string>
int main( int argc, char **argv )
{
std::ifstream fin( argv[1] );
std::copy( std::istreambuf_iterator< char >( fin ),
std::istreambuf_iterator< char >(),
std::ostream_iterator< char >( std::cout, "" ) );
fin.close();
return 0;
}
EDIT
This версия сохраняет пробелы.
C не обеспечивает хороший способ сделать это без создания переменной. Самый простой будет что-то вроде:
#include <stdio.h>
int main( int argc, char **argv )
{
FILE *in = fopen( argv[1] );
int ch;
while ( ( ch = fgetc( in ) ) != EOF )
putchar( ch );
fclose( in );
return 0;
}