2015-06-28 53 views
2

我想打开文件,所以我在ubuntu下使用fopen_s函数。虽然我#include <stdio.h>在这里读取http://en.cppreference.com/w/c/io/fopen,我得到的错误函数没有在范围内声明。 请帮我,我做错了什么,以及如何使它运行?fopen_s未解决在Ubuntu下

FILE *fp; 
fopen_s(&fp, strFilename.c_str(), "rb"); 
if (fp == NULL){ 
    cout << "cannot open " << strFilename.c_str(); 
    return false; 
} 

fclose(fp); 
+0

你跟-std = C11编译? –

+2

还要注意,据我所知,这个函数不是C++ 11标准的一部分,只有C11。 –

回答

1

在Linux上搜索发现的glibc没有证据表明fopen_s()中的glibc实现在Linux上。我在POSIX specification中找不到fopen_s()。在我看来,像fopen_s()是一个仅在Microsoft Windows上实现的非便携库函数。

+0

感谢您的研究,我只是按照教程,但的确是在Windows上。有没有可能使不同的功能完全相同? – beginh

+1

它是C11规范的一部分,第490页:http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf(与第588页的说明相同) 很明显,在Linux上执行C11,我无法评论。 –

+0

使用fopen()而不是fopen_s()。我没有看到fopen_s()做的任何事情都无法用fopen()完成。 –