#include<iostream> 
#include<fstream> 
using namespace std; 
void main() 

char filename[50]; 
cout<<"请输入文件名及路径:"; 
cin>>filename; 
ifstream file; 
file.open(filename); 
while(!file.is_open()) 

file.close(); 
cout<<"错误!文件不存在,请重新输入:"; 
cin>>filename; 
file.open(filename); 

char a[10]; 
file>>a; 
cout<<a<<endl; 
file.close(); 

这个程序用VC++2005编译,假设在C盘下有一个文件a.txt,内容是abcd。 
运行该程序时,输入文件名c:\a.txt后回车,正常显示文件内容abcd,但第一次若输入文件名错误,提示重输,输入正确文件名后却不显示文件内容,这是为什么?请大家帮帮我,谢谢!

解决方案 »

  1.   

    #include<iostream> 
    #include<fstream> 
    using namespace std; 
    void main() 

    char filename[50]; 
    cout<<"请输入文件名及路径:"; 
    cin>>filename; 
    ifstream file; 
    file.open(filename); 
    while(!file.is_open()) 

    file.close(); 
    cout<<"错误!文件不存在,请重新输入:"; 
    cin>>filename; 
    file.open(filename); 
    if (file.is_open())
    break;

    cout<<file.rdbuf()<<endl; 
    file.close(); 
    }
      

  2.   

    #include<iostream> 
    #include<fstream> 
    using namespace std; 
    void main() 

    char filename[50]; 
    cout<<"请输入文件名及路径:"; 
    cin>>filename; 
    ifstream file; 
    file.open(filename); 
    while(!file.is_open()) 

    file.close(); 
    cout<<"错误!文件不存在,请重新输入:"; 
    cin>>filename; 
    file.open(filename); 

    cout<<file.rdbuf()<<endl; 
    file.close(); 
    }