2015-06-28 52 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()完成。 –