加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 如何使用函数freopen_s

发布时间:2020-12-16 07:08:01 所属栏目:百科 来源:网络整理
导读:为了从文本文件中读取输入,我编写了以下代码: int main(){ int x;#ifndef ONLINE_JUDGE freopen("input.txt","r",stdin);#endif scanf("%d",x); printf("%dn",x); system("pause"); return 0;} 它的效果非常好. 但是,在visual studio中,编译器因为freopen
为了从文本文件中读取输入,我编写了以下代码:

int main(){
    int x;
#ifndef ONLINE_JUDGE
    freopen("input.txt","r",stdin);
#endif
    scanf("%d",&x);
    printf("%dn",x);
    system("pause");
    return 0;
}

它的效果非常好.

但是,在visual studio中,编译器因为freopen而给我一个错误,并建议我使用freopen_s代替.我试着理解函数freopen_s是如何工作的,但我不能.我的代码:

int main(){
    int x;
#ifndef ONLINE_JUDGE
    FILE *stream;
    freopen_s(&stream,"input.txt",x);
    system("pause");
    return 0;
}

它不输出任何东西,甚至“暂停”也不起作用.程序完成后没有打印任何内容,cmd就会消失.我不知道为什么在freopen_s中使用“stream”.谢谢你回答我的问题.

解决方法

我建议你避免使用C风格的I / O库并使用IOSTREAM库.它更安全,更干净的解决方案.下面是打开文件并将每行读入“std :: string”对象并在控制台上打印的示例代码.

int main() 
{

std::string  file =  "input.txt";
std::string line;
std::ifstream  text_filestream(file.c_str());

while(std::getline(text_filestream,line)) {
 std::cout<<line<<std::endl;
 }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读