标签:close error 包括 系统 err 测试 bcd 内嵌 hello
1.int getchar(void);//有错返回EOF,也可以指定返回值为char变量,因为这个字符包含于低位字节中(高位字节通常为0)
行缓冲输入:在键入的字符实际传送给程序之前必须敲入一个回车键。
2.int putchar(int c);//只有其低位字节被实际输出到屏幕上
返回被写入的字符,若操作失败,返回EOF(宏EOF被定义于stdio.h中,通常其值为-1)
3. int getch(void);
int getche(void);//不需要回车清空缓冲区
在头文件conio.h中,对于某些编译器中这些函数前面有一下划线_getch()和_getche()
4.char* gets(char* str);
测试代码:
char str[2345];
char* res ;
res = gets(str);
str[18] = ‘\0‘;
printf("%s\n",str);
printf("%s\n",res);
解析:str以数组形式申请,为指针常量,即不能改变指针的指向。是申请了地址空间的指针常量。
或者也可以写成char* str = (char*) malloc(2345); res不能以指针常量形式申请,因为返回的是指针,不能改变res的指向。
5.int puts(const char* str);//不能输出数字或进行格式转换,所以与printf比较使用的空间少,速度快
char str[] = "hello";
int res = puts(str);
cout<<res<<endl;
返回值为0;如果错误则为EOF
6、int printf(const char* control_string,...);
printf()函数返回写入字符的数目,如果出现一个错误,则返回control_string(控制串)有两种类型项目组成。第一类由将打印在屏幕上的字符串组成,第二类包括自定义其后变元显示方式的格式限定符。格式限定符以一个百分号开头,后跟格式化码,变元列表中的变元数与格式限定符完全相等,格式限定符与变元按顺序从左到右匹配。
7、int scanf(const char* control_string...);
可以读入各种内嵌类型并自动将其转换为适当的格式。返回成功的赋予了一个值的数据项。如果出现一个错误,scanf()返回EOF。控制串包括三类字符:
a、格式限定符 b、空白字符 c、非空白字符
8、FILE* fopen(const char*filename,const*char* mode)
打开一个文件
mode合法值如下:
r 为读操作打开一个文本文件
w 为写操作创建一个文本文件
a 附加到一个文本文件
rb 为读操作打开一个二进制文件
wb 为写操作创建一个二进制文件
ab 附加到一个二进制文件
r+ 为读/写操作打开一个文本文件
w+ 为读/写操作创建一个文本文件
a+ 为读/写操作附加或创建一个文本文件
r+b 为读/写操作打开一个二进制文件
w+b 为读/写操作创建一个二进制文件
a+b 为读/写操作附加一个二进制文件
如果打开文件失败,fopen()返回一个空指针。
9、int fclose(FILE* fp);//返回0标志着文件关闭成功。如果关闭失败,则返回EOF。
关闭一个由fopen()打开的文件,把留在磁盘缓冲区的数据写入文件并在操作系统级正式关闭文件。关闭流文件失败会产生各种麻烦,如:丢失数据,破坏文件和程序中出现间歇的错误等。标准函数ferror()来确定和报告出错消息
10、int putc(int ch,FILE* fp);
把一个字符写到文件中,如果操作成功,则函数返回被输出的字节;否则,返回EOF
11、int getc(FILE* fp);
从某一文件读一个字符,函数getc()读到文件尾时返回EOF标志,如果发生错误,也返回EOF。
12、fgetc(),同getc()
13、int fgets(const char*str,int length,FILE* fp);
fgets只能读取N-1个字符,包括最后的‘\n‘,读完结束后系统将自动在最后加‘\0‘(gets读完结束后系统自动会将‘\n‘置换成‘\0‘)。
当你从键盘上输入<=N-1个字符(包括‘\n‘)时,那么字符串str会以‘\n\0’结尾。这就造成了strlen(str)比你想象的大 1
char s1[N];
char s2[N];
fgets(s1, N, stdin);
if(s1[strlen(s1) - 1] == ‘\n‘) { // 去掉换行符
s1[strlen(s1) - 1] = ‘\0‘;
}
fflush(stdin); //清空缓冲区
fgets(s2, N, stdin);
if(s2[strlen(s2) - 1] == ‘\n‘) { // 去掉换行符
s2[strlen(s2) - 1] = ‘\0‘;
}
printf("%s %s", s1, s2);
没有fflush的情况下 输入:12345 输出:1234 5
有fflush: 输入12345 67890 输出 1234 6789
将代码中的fgets改成gets 输入:123456 abcdef 输出f abcdef
14、int fputs(const char*str,FILE*fp),把str指向的字符串写到指定的流中,如果失败,则返回EOF
15、int feof(FILE* fp);
若到文件尾,返回真值.既可用于二进制文件,也可应用于文本文件
eg:
while(!feof(fp)) ch = getc(fp);
16、int ferror(FILE* fp);
函数确定是否在文件操作期间出错。fp是有效的文件指针。在文件操作期间如果有错,则函数返回true,否则返回false。
17、void rewind(FILE* fp),把文件位置指针重新置于文件的起始位置,fp是有效的文件指针,
18、int remove(const char*filename),清除一个文件,操作成功,返回0,操作失败返回非零值。
19、int fflush(FILE* fp);
清空一个输出流的内容,将任何缓冲区的内容写到与fp相关的文件中,fflush(NULL)清空所有输出流和更新流。操作成功返回0,否则返回EOF。
20,size_t fread(void* buffer,size_t num_byte,size_t count,FILE* fp);
buffer 是一个指针,指向一个接收文件中数据的存储区,count的值指出要写多少项。返回读入的项的数目,如遇到文件的结尾或操作失败。这个值可能少于count。
21、size_t fwrite(const void * buffer,size_t num_byte,size_t count ,FILE* fp);
buffer 是一个指针,指向要写入文件中的信息快。count的值指出要写多少项。返回写入项的数目,这个值永远等于count,除非操作失败。
注意:size_t类型被定义为某种无符号整数,fp是指向已经打开流的文件指针。fwrite()和fread()最大的用途之一是可以写用户自定义的数据类型,特别是结构体类型
22、int fseek(FILE* fp,long int numbytes,int origin);
fp是由fopen()返回的指针,numbytes是从文件的origin位置到当前位置的字节,是下面的宏之一:
origin 宏名
文件开始处 SEEK_SET
当前位置 SEEK_CUR
文件末尾 SEEK_END
可以用fseek()来寻找任何数据类型的倍数,方法是用想要的项数乘以数据的长度。eg:fseek(fp,9*sizeof(struct myStruct),SEEK_SET);
23、long int ftell(FILE* fp);
决定一个文件的当前位置,返回与fp关联的文件的当前位置的地址。如果失败,返回-1.
24、int fprintf(FILE* fp,const char* control_string...);
int fscanf(FILE* fp,const char* control_string...);
注意:尽管fprintf()和scanf()是从磁盘文件中读写数据最容易的方法,但却并不是最有效的方法。由于格式化的ASCⅡ数据写入文件的格式与在屏幕上显示的相同(而不是二进制方式),因而调用时要引起额外的开销。如果要考虑速度与文件长度,最好使用fread()和fwrite()
cin、cout、cerr和C的stdin、stdout、stderr相对应。
标签:close error 包括 系统 err 测试 bcd 内嵌 hello
原文地址:https://www.cnblogs.com/Lune-Qiu/p/9329449.html