常用C函数(8)

2019-03-27 19:34

printf( \fclose(fp1); fclose(fp2); } }

例程说明:

(1)首先开辟一个大小为BUFSIZ的缓冲区,用作指定文件的缓冲区。这里,BUFSIZE为stdio.h中定义的宏,缺省值为512字节。

(2)以追加的方式和写的方式打开名为\和\的文件。

(3)应用setbuf函数给文件流fp1指定缓冲区buf,其中buf为缓冲区的首地址。并在屏幕上显示该首地址。

(4)文件流fp2不指定缓冲区,也就是第二个参数设置为NULL。并信息提示不分配缓冲区。

(5)关闭两个文件。

注意:使用setbuf函数指定文件的缓冲区时,一定要在文件读写之前。一旦用户自己指定了文件的缓冲区,文件的读写就要在用户指定的缓冲区中进行,而不在系统默认指定的缓冲区中进行。函数setvbuf的用法与setbuf类似,只是它的缓冲区大小可以动态分配,由函数的参数指定,而且缓冲区的类型也可以由参数指定。

sprintf:向字符串写入格式化数据函数

函数原型:int sprintf(char *string, char *farmat [,argument,...]); 头文件:#include 是否是标准函数:是

函数功能:将格式化的数据存储到以string为首地址的缓冲区中。参数argument要被转化为farmat规定的格式,并按照这个规定的格式向字符串数组写入数据。这里应该注意,sprintf函数与printf函数和fprint函数不同,前者是向缓冲区(即数组)写入格式化数据,后者是向标准输出文件(stdout)和用户自定义文件输出格式化数据。

返回值:返回存储在string中数据的字节数。

例程如下应用sprintf函数向指定缓冲区写入数据。

#include #include int main(void) {

char str[80];

sprintf(str, \puts(str); return 0; }

例程说明:

(1)首先开辟一个80字节大小的缓冲区str,即:该缓冲区以str为首地址。 (2)再将指定的字符串写入缓冲区str中。其中,M_PI是math.h中定义的常量3.141593。 (3)应用puts函数向终端输出该字符串。

注意:puts函数的作用是把str指定的字符串输出到标准输出设备,并且将字符串结束标志'/0'转换为回车换行符。因此,该程序运行的结果是:

An approximation of Pi is 3.141593

除了规定字符串中的换行符外,程序还将'/0'转换为换行符。

sscanf:从缓冲区中读格式化字符串函数

函数原型:int sscanf(char *string, char *format[,argument,...]); 头文件:#include 是否是标准函数:是

函数功能:将string指定的数据读到argument所指定的位置。其中,参数argument是与format格式要求相符合的变量指针。也就是说,如果format指定的格式为\,则argument就必须是整型变量的指针。这里应该注意,sscanf函数与scanf函数和fscanf函数不同,前者是从指定的缓冲区读格式化数据到新的缓冲区中,而后者是从标准输入文件(stdin)和用户自定义文件中读取格式化数据到缓冲区中。

返回值:成功返回已分配空间的数量,返回0表示没用空间分配,返回EOF表示出错。 例程如下应用sscanf函数读取格式化数据。

#include void main( void ) {

char str[] = \char s[81]; char c; int i; float fp;

/* 从缓冲区str中读取数据 */ sscanf( str, \sscanf( str, \sscanf( str, \sscanf( str, \ /* 输出已读取的数据 */ printf( \ = %s\\n\printf( \printf( \ = %d\\n\printf( \ = %f\\n\}

例程说明:

(1)首先开辟一个以str为首地址的缓冲区,并初始化其内容。 (2)应用sscanf函数从缓冲区str中读取数据。分别以格式要求\、\、\、\读取,并存入相应的变量中。

(3)输出已读取的数据。

tmpfile:创建临时文件函数

函数原型:FILE *tmpfile(void); 头文件:#include 是否是标准函数:是

函数功能:创建一个临时文件。该文件以w+b(二进制读写)方式打开,当该文件被关闭时,该文件会被自动删除。

返回值:返回指向临时文件的指针,如果文件打不开则返回EOF。 例程如下创建一个临时文件。

#include #include int main(void) {

FILE *tempfp; tempfp = tmpfile(); if (tempfp)

printf(\else {

printf(\exit(1); }

sleep(20); return 0; }

例程说明: (1)首先应用tmpfile函数创建一个临时文件,并将文件指针赋值给FILE型变量tempfp。 (2)如果创建临时文件成功,则在终端显示提示:Temporary file be created!! (3)如果创建不成功,则显示提示:Unable to create the temporary file!! (4)程序挂起20秒。

注意:这里将程序挂起20秒的目的是为了让用户看到生成的临时文件。这是因为当程序执行完时,系统会自动删除临时文件,那样用户就感觉不到临时文件的创建了。当该程序运行时,会在当前文件夹下生成一个临时文件。

临时文件的作用是暂时存储程序运行过程中需要的数据,当程序运行完毕时,这些数据也就没有用了。

tmpnam:创建临时文件名函数

函数原型:char *tmpnam(char *string); 头文件:#include 是否是标准函数:是

函数功能:创建一个临时文件名,用以打开一个临时文件。 返回值:创建成功返回指向该文件名的指针,否则返回NULL。 例程如下

#include #include main() {

char tmp[10]; tmpnam(tmp);

printf(\ }

例程说明:

(1)首先定义一个字符型数组tmp。

(2)调用tmpnam函数生成一个临时文件名。 (3)打印出该临时文件名。

注意:应用函数tmpnam生成的临时文件名是不同于任何已存在文件名的有效文件名。

本函数用于给临时文件创建文件名。

ungetc:把字符退回到输入流函数

函数原型:int ungetc(char c, FILE *fp); 头文件:#include 是否是标准函数:是

函数功能:把字符c退回到fp所指向的文件流中,并清除文件的结束标志。fp所指向的文件既可以是用户自定义的文件,又可以是系统定义的标准文件。

返回值:成功返回字符c,否则返回EOF。

例程如下应用ungetc函数向标准输入文件退回字符。

#include #include int main( void ) {

int i=0; char ch;

puts(\ /* 读取字符直到输入非数字或EOF */

while((ch = getchar()) != EOF && isdigit(ch))

i = 10 * i + ch - 48; /* 将ASCII码转换为整数值*/ /* 如果输入非数字,将其退回输入流 */

if (ch != EOF) ungetc(ch, stdin);

printf(\ return 0; }

例程说明:

(1)首先从终端输入一串字符串,要求输入整型数字,并以非数字字符结尾。

(2)程序读取字符,直到输入非数字或EOF为止,并将数字字符串转换为整型数。例如:将字符串\转换为整型数123。

(3)再将结尾的非数字字符退回到标准输入文件(stdin)。 (4)显示退回到标准输入文件中的字符。

注意:所谓将结尾的非数字字符退回到标准输入文件,就是说将数字字符串后面的那个非数字字符退回到标准输入文件中去。例如:输入的字符串为\,那么退回的字符就是a。这样,程序将前面的字符串\转换为整型数123,并存入变量i中。a作为数字字符串输入的结束标志(因为 a是继数字字符之后的第一个非数字字符),被退回到标准输入文件(stdin)。于是,再调用getchar函数读取的字符就应该是刚刚退回到标准输入文件中的字符a。因此,本段例程的执行结果为:

Input an integer followed by a char: 123abc

i = 123, next char in buffer = a

即:输入的字符串中123 为整型数,接下来的字符为a。


常用C函数(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:数据库系统原理参考答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: