昨天我们学习了C字符串、结构与共同体,相信你一定有所收获,接下来我们将学习C输入输出与文字读写,跟上我的不发一起来学习吧!
C输入输出当我们提到输入时,这意味着要向程序填充一些数据。输入可以是以文件的形式或从命令行中进行。C语言提供了一系列内置的函数来读取给定的输入,并根据需要填充到程序中。
当我们提到输出时,这意味着要在屏幕上、打印机上或任意文件中显示一些数据。C语言提供了一系列内置的函数来输出数据到计算机屏幕上和保存数据到文本文件或二进制文件中。
文件指针是访问文件的方式,本节将讲解如何从键盘上读取值以及如何把结果输出到屏幕上。
C语言中的I/O(输入/输出)通常使用printf()和scanf()两个函数。
scanf()函数用于从标准输入(键盘)读取并格式化,printf()函数发送格式化输出到标准输出(屏幕)。
所有的C语言程序都需要包含main()函数。代码从main()函数开始执行。
printf()用于格式化输出到屏幕。printf()函数在"stdio.h"头文件中声明。
stdio.h是一个头文件(标准输入输出头文件)and#include是一个预处理命令,用来引入头文件。当编译器遇到printf()函数时,如果没有找到stdio.h头文件,会发生编译错误。
return0;语句用于表示退出程序。
1
getchar()putchar()函数intgetchar(void)函数从屏幕读取下一个可用的字符,并把它返回为一个整数。这个函数在同一个时间内只会读取一个单一的字符。您可以在循环内使用这个方法,以便从屏幕上读取多个字符。
intputchar(intc)函数把字符输出到屏幕上,并返回相同的字符。这个函数在同一个时间内只会输出一个单一的字符。您可以在循环内使用这个方法,以便在屏幕上输出多个字符。
2
gets()puts()函数char*gets(char*s)函数从stdin读取一行到s所指向的缓冲区,直到一个终止符或EOF。
intputs(constchar*s)函数把字符串s和一个尾随的换行符写入到stdout。
scanf()和printf()函数ntscanf(constchar*format,...)函数从标准输入流stdin读取输入,并根据提供的format来浏览输入。
intprintf(constchar*format,...)函数把输出写入到标准输出流stdout,并根据提供的格式产生输出。
format可以是一个简单的常量字符串,但是您可以分别指定%s、%d、%c、%f等来输出或读取字符串、整数、字符或浮点数。还有许多其他可用的格式选项,可以根据需要使用。
在这里,应当指出的是,scanf()期待输入的格式与您给出的%s和%d相同,这意味着您必须提供有效的输入,比如"stringinteger",如果您提供的是"stringstring"或"integerinteger",它会被认为是错误的输入。另外,在读取字符串时,只要遇到一个空格,scanf()就会停止读取,所以"thisistest"对scanf()来说是三个字符串。
以上就是C输入输出的相关知识分享,相信你已经有所掌握,接下来我们将继续进行C文件读写的学习,跟上我的步伐一起学习吧!
C文件读写接下来我们将介绍C程序员如何创建、打开、关闭文本文件或二进制文件。
一个文件,无论它是文本文件还是二进制文件,都是代表了一系列的字节。C语言不仅提供了访问顶层的函数,也提供了底层(OS)调用来处理存储设备上的文件。下面将讲解文件管理的重要调用。
1
打开文件您可以使用fopen()函数来创建一个新的文件或者打开一个已有的文件,这个调用会初始化类型FILE的一个对象,类型FILE包含了所有用来控制流的必要的信息。下面是这个函数调用的原型:
FILE*fopen(constchar*filename,constchar*mode);
在这里,filename是字符串,用来命名文件,访问模式mode的值可以是下列值中的一个:
如果处理的是二进制文件,则需使用下面的访问模式来取代上面的访问模式:
"rb","wb","ab","rb+","r+b","wb+","w+b","ab+","a+b"
2
关闭文件为了关闭文件,请使用fclose()函数。函数的原型如下:
intfclose(FILE*fp);
如果成功关闭文件,fclose()函数返回零,如果关闭文件时发生错误,函数返回EOF。这个函数实际上,会清空缓冲区中的数据,关闭文件,并释放用于该文件的所有内存。EOF是一个定义在头文件stdio.h中的常量。
C标准库提供了各种函数来按字符或者以固定长度字符串的形式读写文件。
写入文件下面是把字符写入到流中的最简单的函数:
intfputc(intc,FILE*fp);
函数fputc()把参数c的字符值写入到fp所指向的输出流中。如果写入成功,它会返回写入的字符,如果发生错误,则会返回EOF。您可以使用下面的函数来把一个以null结尾的字符串写入到流中:
intfputs(constchar*s,FILE*fp);
函数fputs()把字符串s写入到fp所指向的输出流中。如果写入成功,它会返回一个非负值,如果发生错误,则会返回EOF。您也可以使用intfprintf(FILE*fp,constchar*format,...)函数把一个字符串写入到文件中。
4
读取文件下面是从文件读取单个字符的最简单的函数:
intfgetc(FILE*fp);
fgetc()函数从fp所指向的输入文件中读取一个字符。返回值是读取的字符,如果发生错误则返回EOF。下面的函数允许您从流中读取一个字符串:
char*fgets(char*buf,intn,FILE*fp);
函数fgets()从fp所指向的输入流中读取n-1个字符。它会把读取的字符串复制到缓冲区buf,并在最后追加一个null字符来终止字符串。
如果这个函数在读取最后一个字符之前就遇到一个换行符\n或文件的末尾EOF,则只会返回读取到的字符,包括换行符。您也可以使用intfscanf(FILE*fp,constchar*format,...)函数来从文件中读取字符串,但是在遇到第一个空格和换行符时,它会停止读取。
5
下面两个函数用于二进制输入和输出:
size_tfread(void*ptr,size_tsize_of_elements,size_tnumber_of_elements,FILE*a_file);size_tfwrite(constvoid*ptr,size_tsize_of_elements,size_tnumber_of_elements,FILE*a_file);这两个函数都是用于存储块的读写-通常是数组或结构体。