2017年9月30日土曜日

fopen_s() を fopen() で書き直す?

逆はあるんですけどね。
fopen_sとかsscanf_sとかの"_s"関数書き換え例まとめ
http://blog.livedoor.jp/mrcom511/archives/51270788.html

この例だと fopen() を fopen_s() に書き換えてますが、逆はこんな感じでしょうか?

#include<stdio.h>
#include<errno.h>       /* to rewrite fopen_s() as fopen() */
#include<string.h>      /* strerror() */

int main()
{
        int ferrno = 0;
        FILE *fp = NULL;

/*
ferrno=fopen_s(&fp,\"testfile.txt\",\"r\");
*/

        errno = 0;
        fp = fopen(\"testfile.txt\", \"r\");
        ferrno = errno;

/* print some variables */

        printf(\"ferrno: %d fp: %p strerror: %s \\n\", ferrno, fp,
               strerror(ferrno));

        if (fp != NULL) {
                fclose(fp);
        }

        return 1;
}

ferrno なんて使わないし、って場合は errno.h を読まずに捨ててしまえばいいだけ、かな?