Come as guests, stay as family.

I ♥ 4MGHC


Hướng dẫn sử dụng diễn đàn Với mong muốn có một Website hỏi đáp chất lượng 4MGHC đã ra đời. Đây là cộng đồng hỏi đáp dành cho lập trình viên, sinh viên, các bạn ưu thích lập trình... Việt Nam. Huy vọng các bậc tiền bối, các bằng hữu gần xa chung tay chia sẽ, giúp đỡ, giải đáp các thắc mắc trên Website. Cùng nhau củng cố, đóng góp cho sự nghiệp phát triển thông tin, công nghệ của đất nước.
Trong diễn đàn bạn có thể
  1. Hỏi đáp trong diễn đàn
  2. Đánh giá và like bài post
Đăng ký

Số người đang xem trên diễn đàn: 1300
1
  1. Tân thế giới
    Posts:
    784319
    Vote:
    2
    Like:
    4
    Cách dùng hàm fopen_s trong Visual C++ 2008
    Image
    Image
    Users online on this topic: 1
    bao_lua_bk
    Thành viên mới
    Ngày gia nhập: 02 2011
    Bài viết: 11
    -------------------------
    Cách dùng hàm fopen_s trong Visual C++ 2008
    Chào cả nhà, mình dùng visual studio 2008 để viết code, và là code C++, nhưng ko hiểu sao khi dùng hàm fopen thì nó báo warning, rồi nó khuyên là nên dùng fopen_s. Nhưng mình ko biết sử dụng hàm fopen_s như thế nào? Mong cả nhà giúp đỡ. Thanks!

    Đây là đoạn code:

    Code:
    Code: Select all

    int CHuffCode::CreateStatisticTable(char * filein) //thuc hien xu ly cac ki tu trong bang ma
    {
    FILE * fi = fopen(filein,"rb");
    if ( fi == NULL )
    return -1 ;
    unsigned char temp ;
    while( fread(&temp,1,1,fi) )
    HuffTree[temp].nFreq ++ ;
    return 1 ;
    }

    Và dòng warning:

    warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    Image 0
    Image
  2. Ký Túc Xá
    Posts:
    2533979
    Vote:
    19
    Like:
    2
    Image
    Image
    gianghoplus
    Thành viên nhiệt tình
    Ngày gia nhập: 09 2008
    Bài viết: 222
    -------------------------
    Trích dẫn:
    Nguyên bản được gửi bởi bao_lua@bk
    Quote: Select all

    Chào cả nhà, mình dùng visual studio 2008 để viết code, và là code C++, nhưng ko hiểu sao khi dùng hàm fopen thì nó báo warning, rồi nó khuyên là nên dùng fopen_s. Nhưng mình ko biết sử dụng hàm fopen_s như thế nào? Mong cả nhà giúp đỡ. Thanks!

    [/CODE]

    Và dòng warning:

    warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.


    Hàm fopen() là các hàm cũ (ko an toàn). Bạn vẫn có thể sử dụng bt. Hoặc dùng hàm thay thế là fopen_s(). Cách dùng bạn có thể xem ở MSDN, có đủ cả

    Mình sửa lại như sau

    Code:
    Code: Select all

    int CHuffCode::CreateStatisticTable(char * filein) //thuc hien xu ly cac ki tu trong bang ma
    {
    FILE * fi;

    if (fopen_s(&fi, filein, "rb") != NOERROR)
    return -1 ;

    unsigned char temp ;

    while( fread(&temp,1,1,fi) )
    HuffTree[temp].nFreq ++ ;

    return 1 ;
    }

    trong MFC còn có lớp CFile. Dùng cũng khá dễ dàng
    __________________

    Ân oán giang hồ nuôi tôi lớn

    Cuộc đời khốn nạn dạy tôi khôn

    Không đâm không chém đời không nể

    Không tiền không bạc gái không theo


    ----------------------

    Visit my blog: http://nova-soft.net/
    Image 0
    Image
    Image
  3. Ký Túc Xá
    Posts:
    2533979
    Vote:
    19
    Like:
    2
    Image
    Image
    bao_lua_bk
    Thành viên mới
    Ngày gia nhập: 02 2011
    Bài viết: 11
    -------------------------
    Cám ơn bạn nhé !!!
    Image 0
    Image
    Image
  4. Ký Túc Xá
    Posts:
    2533979
    Vote:
    19
    Like:
    2
    Image
    Image
    icestars
    Thành viên mới
    Ngày gia nhập: 02 2012
    Bài viết: 1
    -------------------------
    Sửa fopen thành fopen_s
    Các bạn giúp mình sửa hàm fopen sang fopen_s với:
    void setDestination(const char* name)

    {

    if (name==NULL) {

    stream = stdout;

    }

    else {

    stream = fopen(name,"w");

    if (stream == NULL) {

    stream = stdout;

    }

    }

    }
    Image 0
    Image
    Image
1