整理自https://msdn.microsoft.com/zh-cn/library/t3ayayh1(VS.80).aspx

errno, _doserrno, _sys_errlist, and _sys_nerr

这些全局变量包含perror和strerror函数使用的错误代码来打印错误消息。 应该使用下表中列出的更安全的功能版本代替它们的全局变量。

Global Variable Functional Equivalents

_doserrno

_get_doserrno_set_doserrno

_errno

_get_errno_set_errno

These variables are declared in STDLIB.H as

extern int _doserrno; 
extern int errno; 
extern char *_sys_errlist[ ];
extern int _sys_nerr;
 

系统级调用中的错误设置了errno。因为errno保留设置它的最后一次调用的值,所以该值可能会被后续调用所改变。始终在可能设置的呼叫之前和之后检查errno。
在错误中,errno不一定设置为与系统调用返回的错误代码相同的值。对于I / O操作,请使用_doserrno访问errno代码的操作系统错误代码。对于大多数非I / O操作,_doserrno的值未定义。
每个错误值都与可以使用perror打印或使用strerror存储在字符串中的错误消息相关联。 perror和strerror使用_sys_errlist数组和_sys_nerr(_sys_errlist中的元素数)来处理错误信息。
图书馆数学例程通过调用_matherr设置errno。为了处理数学错误,请根据_matherr参考描述编写自己的例程,并将其命名为_matherr。
在ERRNO.H中定义为预定义常量的所有errno值均与UNIX兼容,并在下面列出。只有ERANGE,EILSEQ和EDOM在ANSI标准中指定。

Constant System error message Value

EPERM

Operation not permitted

1

ENOENT

No such file or directory

2

ESRCH

No such process

3

EINTR

Interrupted function

4

EIO

I/O error

5

ENXIO

No such device or address

6

E2BIG

Argument list too long

7

ENOEXEC

Exec format error

8

EBADF

Bad file number

9

ECHILD

No spawned processes

10

EAGAIN

No more processes or not enough memory or maximum nesting level reached

11

ENOMEM

Not enough memory

12

EACCES

Permission denied

13

EFAULT

Bad address

14

EBUSY

Device or resource busy

16

EEXIST

File exists

17

EXDEV

Cross-device link

18

ENODEV

No such device

19

ENOTDIR

Not a directory

20

EISDIR

Is a directory

21

EINVAL

Invalid argument

22

ENFILE

Too many files open in system

23

EMFILE

Too many open files

24

ENOTTY

Inappropriate I/O control operation

25

EFBIG

File too large

27

ENOSPC

No space left on device

28

ESPIPE

Invalid seek

29

EROFS

Read-only file system

30

EMLINK

Too many links

31

EPIPE

Broken pipe

32

EDOM

Math argument

33

ERANGE

Result too large

34

EDEADLK

Resource deadlock would occur

36

EDEADLOCK

Same as EDEADLK for compatibility with older Microsoft C versions

36

ENAMETOOLONG

Filename too long

38

ENOLCK

No locks available

39

ENOSYS

Function not supported

40

ENOTEMPTY

Directory not empty

41

EILSEQ

Illegal byte sequence

42

STRUNCATE

String was truncated

80

备注:fopen有一个小坑,当然只对于初学者而言

fopen的方法定义是这样的

FILE	*fopen(const char * __restrict __filename, const char * __restrict __mode) __DARWIN_ALIAS_STARTING(__MAC_10_6, __IPHONE_2_0, __DARWIN_ALIAS(fopen));

fopen有两个参数,一个是你要操作的文件名_filename,一个是你要做什么操作_mode,mode没有什么好说的,filename这个参数,如果只传你想操作的文件名,而你的文件是本地的,可能会因为路径问题,提示你找不到文件。error = 2(No such file or directory)没有相关路径或者没有这个文件。

这个情况有两种解决方案:

一种是本地利用w的mode自己去创建一个文件,针对这个文件去操作,可以保证这个文件是在你的当前目录下的,不过这种不一定适用,比如我就是要读一个字库的bin文件,然后想将字库文件中的Unicode字库点阵转成utf8,存到数组中,写入文件。

第二种比较简单,你可以尝试一下绝对路径,找到文件的绝对路径,给到参数_filename就OK了,需要注意的是,路径中一般都包含“\”字符,在C/C++语言中有转译字符这一说;

所有的转义字符和所对应的意义:
转义字符
意义
ASCII码值(十进制)
\a
响铃(BEL)
007
\b
退格(BS) ,将当前位置移到前一列
008
\f
换页(FF),将当前位置移到下页开头
012
\n
换行(LF) ,将当前位置移到下一行开头
010
\r
回车(CR) ,将当前位置移到本行开头
013
\t
水平制表(HT) (跳到下一个TAB位置)
009
\v
垂直制表(VT)
011
\\
代表一个反斜线字符''\'
092
\'
代表一个单引号(撇号)字符
039
\"
代表一个双引号字符
034
\?
  
代表一个问号
  
063
  
\0
空字符(NULL)
000
\ooo
1到3位八进制数所代表的任意字符
三位八进制
\xhh
1到2位十六进制所代表的任意字符
二位十六进制
 
注意:区分,斜杠:"/" 与 反斜杠:"\" ,此处不可互换
 
所以,如果你的路径是c:\demo\abc.txt ,你需要传入参数_filename = c:\\demo\\abc.txt
 
 #include <iostream>
#include <fstream> int main ()
{
std::cout << "hello world \n"; FILE *fp;
char *ch = "";
char buff[]; errno_t err = fopen_s(&fp,"c:\\Users\\zhi\\Desktop\\abc.txt","r"); if(err == )
{
printf("the file open successful!"); ch = fgets(buff,,fp);
printf("ch is :%s",ch);
fclose(fp); }else{
printf("err:%d",err);
printf("the file open not OK!");
}
return ;
}

先整理这些,都是昨天遇到的问题,虽小却有成长.

fopen的使用小记的更多相关文章

  1. atop 分析小记

    atop分析小记 atop这个工具相当NB 项目中需要用到它的磁盘使用率统计值,为了一探究竟,挖了下它的代码 atopsar atopsar实际就是atop的一个链接指向. 从atop.c的main源 ...

  2. [原]Paste.deploy 与 WSGI, keystone 小记

    Paste.deploy 与 WSGI, keystone 小记 名词解释: Paste.deploy 是一个WSGI工具包,用于更方便的管理WSGI应用, 可以通过配置文件,将WSGI应用加载起来. ...

  3. FILE文件流的中fopen、fread、fseek、fclose的使用

    FILE文件流用于对文件的快速操作,主要的操作函数有fopen.fseek.fread.fclose,在对文件结构比较清楚时使用这几个函数会比较快捷的得到文件中具体位置的数据,提取对我们有用的信息,满 ...

  4. fopen函数和fread函数、fwrite函数

    fopen(打开文件) 相关函数 open,fclose 表头文件 #include<stdio.h> 定义函数 FILE * fopen(const char * path,const ...

  5. C语言的fopen函数(文件操作/读写)

    头文件:#include <stdio.h> fopen()是一个常用的函数,用来以指定的方式打开文件,其原型为:    FILE * fopen(const char * path, c ...

  6. MySql 小记

    MySql  简单 小记 以备查看 1.sql概述 1.什么是sql? 2.sql发展过程? 3.sql标准与方言的关系? 4.常用数据库? 5.MySql数据库安装? 2.关键概念 表结构----- ...

  7. Git小记

    Git简~介 Git是一个分布式版本控制系统,其他的版本控制系统我只用过SVN,但用的时间不长.大家都知道,分布式的好处多多,而且分布式已经包含了集中式的几乎所有功能.Linus创造Git的传奇经历就 ...

  8. 广州PostgreSQL用户会技术交流会小记 2015-9-19

    广州PostgreSQL用户会技术交流会小记 2015-9-19 今天去了广州PostgreSQL用户会组织的技术交流会 分别有两个session 第一个讲师介绍了他公司使用PostgreSQL-X2 ...

  9. 东哥读书小记 之 《MacTalk人生元编程》

         一直以来的自我感觉:自己是个记性偏弱的人.反正从小读书就喜欢做笔记(可自己的字写得巨丑无比,尼玛不科学呀),抄书这事儿真的就常发生俺的身上. 因为那时经常要背诵课文之类,反正为了怕自己忘记, ...

随机推荐

  1. 一次SocketException:Connection reset 异常排查

    问题描述 上一期的需求上线之后,线上多了一个异常:Connection reset.如下: [2017-03-22 00:45:00 ERROR] [creativeAuditTaskSchedule ...

  2. 数据结构(三) 用java实现七种排序算法。

    很多时候,听别人在讨论快速排序,选择排序,冒泡排序等,都觉得很牛逼,心想,卧槽,排序也分那么多种,就觉得别人很牛逼呀,其实不然,当我们自己去了解学习后发现,并没有想象中那么难,今天就一起总结一下各种排 ...

  3. css实现下拉菜单

    实现一个效果不难,难的是使用最少的代码实现一个效果 <!DOCTYPE html> <html lang="en"> <head> <me ...

  4. oracle查询每个表所占的空间

    查看当前用户的每个表所占的空间大小: select segment_name,sum(bytes)/1024/1024 size_M from user_extents group by segmen ...

  5. js两个判断&&的值与||的值

    var value1="val1"; var value2="val2"; alert(value1&&value2);    //结果为val ...

  6. CSS3学习笔记(4)-CSS3函数

    p{ font-size: 15px; text-indent: 2em; } .alexrootdiv>div{ background: #eeeeee; border: 1px solid ...

  7. 3.Java集合总结系列:Set接口及其实现

    一.Set接口 Set 接口与 List 接口相比没有那么多操作方法,比如: 1.List 接口能直接设置或获取某个元素的值,而Set接口不能. 2.List 接口能直接在指定位置删除.增加元素,而S ...

  8. ecshop打开手机端QQ对话窗口

    ecshop的手机功能比较弱,默认的模板很丑,也不带打开手机端QQ等功能,在程序里添加im等程序变量后,在模板里引入以下代码,即可打开手机端qq对话窗口 <!-- QQ 号码 {foreach ...

  9. Kindle PaperWhite3 越狱和PDF插件的安装

    下载所需工具 这里分享的文件是这个教程中所需要的所有文件 所有工具下载链接:http://pan.baidu.com/s/1c249P2S 密码:ozc7 一.准备工作 本越狱方法仅适用于 KO.KV ...

  10. Eclipse实现图形化界面插件-vs4e

    vs4e插件下载地址:http://visualswing4eclipse.googlecode.com/files/vs4e_0.9.12.I20090527-2200.zip 下载完成后,解压,然 ...