您的位置:首页 > 编程语言 > C语言/C++

C语言学习--标准输入输出与文件操作

2014-08-31 14:17 267 查看
C语言的I/O函数介绍

C语言的输入输出函数定义在stdio.h里。本文主要介绍scanf / printf / gets / puts / fopen / fgets / fputs 这几个函数的用法。

一. 标准输入/输出

1.scanf() 与 printf()

函数原型及说明:

int scanf(const char *format, ...);
//scanf() 函数从标准输入设备stdin读取数据,返回与格式化字符串format成功匹配的个数。
int printf(const char *format, ...);<pre name="code" class="cpp">//scanf()函数将指定的字符串输出到标准输出设备stdout,如果成功,则返回输出的字符数(不包括字符串结束标识'\0'),否则,返回一个负数。


用法举例:

程序片:

char* input = malloc(32*sizeof(char)); 
scanf("%s",input); 
printf("%s",input); 
free(input);


输入与输出:

[liuyz@localhost Desktop]$ gcc -std=c99 -o StdInOutDemo.o  StdInOutDemo.c 
[liuyz@localhost Desktop]$ ./StdInOutDemo.o 
who are you ? 
who[liuyz@localhost Desktop]$


注:printf()函数不会自动输出到新的一行,需要手动使用"\n"指定在何处输出新的一行,例如:printf("123\n456");

2.gets()与puts()

函数原型及说明:

char *gets(char *s);
//gets()函数从标准输入设备stdin读取一行,然后将读取的数据存储到s指向的内存块中。
//它将在这行数据的最后添加'\n'。如果成功则返回s,失败则返回NULL。
//它不检查s是否足够大以存储读取的数据,所以它不安全。
int puts(const char *s);
//puts()函数将s和一个换行符下到标准输出设备stdout。如果成功,则返回一个非负数;否则,返EOF


用法举例:

程序片:

gets(input); 
puts(input);


输入与输出:

[liuyz@localhost Desktop]$ ./StdInOutDemo.o 
who are u ? 
who are u ? 
[liuyz@localhost Desktop]$
注:使用gets()函数的程序在编译是会给出一个警告,因为它是不安全的,所以不建议使用该函数。

二. 文件操作

1.fopen()

函数原型及说明:

FILE *fopen(const char *path, const char *mode);
//以mode模式打开path指定的文件。如果成功,返回一个FILE指针;否则,返回NULL。
//mode:
//r:只读模式,从文件开始处读
//r+:读写模式,从文件开始处读写,覆盖源文件的内容
//w:只写模式,从文件开始处写,清空源文件;文件不存在则新建之
//w+:读写模式,从文件开始处读写,清空源文件;文件不存在则新建之
//a:写模式,在文件末尾写入数据;文件不存在则创建之
//a+:读写模式,从文件开始处读,在文件末尾写入数据;文件不存在则创建之
用法举例:

FILE* fp=fopen("test.txt","r");


2.fgets()和fputs()

函数原型及说明:

char *fgets(char *s, int size, FILE *stream);
//fgets()函数从stream中读取至多size-1个字符并把它存储到s指向的内存块中,读到EOF或者读完一行停止,并在最后添加'\0'。
//如果stram为stdin,则该函数等价于gets()。
//如果成功,返回s;否则,返回NULL。
int fputs(const char *s, FILE *stream);
//fputs()把s写到stream,不包括s的结束标识'\0'。如果成功,则返回一个非负数;否则,返回EOF。
//如果stream为stdout,则该函数等价于puts()。
用法举例:

//读取一个文件并输出到标准输出设备stdout
FILE* fp=fopen(fileName,mode);
if(fp)
{
	char* p=malloc(bufSize*sizeof(char));
	while(p=fgets(p,bufSize,fp))
	{
		fputs(p,stdout);
	}	
}
fclose(fp);


3.fclose()

函数原型及说明:

int fclose(FILE *fp);
//fclose()函数将output写入并关闭文件。如果成功,则返回0;否则,返回EOF。
注:文件使用完毕要记得关闭,以免引起其他问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: