#本节我们主要是讨论C语言的输入和输出#
一、printf()
二、*scanf()
三、*其他输入输出
前面我们经常使用头文件<stdio.h>,那么我们到底用到了这里面哪些函数呢。我们本节要说的输入输出函数就包含在其中。ps:但是今天提到的函数里面也有其他头文件里面的,例如<string.h>。
一、printf();
printf()的作用就是向输出设备(比如屏幕)输出数据。【ps:资深读者可以学习一下printf()的压栈顺序等相关拓展知识】
用法一:printf("string");//输出字符串(结果读者大大自己动手实践,光看是没有任何意义的,包括以后的学习也是这样)
printf("Hello ,I'm Stark");//这一语句的作用就是向屏幕输出一串字符(即引号内部字符串内容)
用法二:printf("字符串,格式符",参数);//输出一串字符+特定格式字符
printf("这是一个十进制整数:%d ",64);//输出:64,常量做参数
int data=64;
printf("这是一个十进制整数:%d",data);//输出:64,变量做参数,不止十进制整数可以这样哦,其他数据类型也可以。
printf("这是一个字符数据:%c ",'A');//输出:A
printf("这是一个字符串:%s \n","I'm Stark");//输出:I'm Stark,"\n"表示换行
printf("这是一个十六进制整数:%x",64);//输出:40这里的40是16进制表示的的64
//......
这里要格外注意,A要被' '括起来才表示字符,不然就是一个名为A的变量(当然定没定义过看读者大大自己的代码了);而一串字符要被" "括起来哦。另外博主也为大家总结了一下可能要用到的一些占位符。话不多说,上图:(当然还有一些其他类型的占位符就不一一列举了,如%p是指针类型的占位符)
唉哟,看到 “ \n ”了,那就要说一说转义字符了。
怎么样,表示的含义都看了吧。那么就会有些人问,不就这些吗,小意思。不是的,博主要在这里告诉大家这个小知识也有一些要注意的细节,比如 " \\ " 表示一个 " \ ";博主什么意思呢?相信大家都知道网址还有路径里面都含有"\"字符吧,要想完整的表示出来,让计算机识别你想表达的路径那就需要输入两个来表示一个,不然会出现大问题的。所以,大家在学习时一定要抱着敬畏的心态去学习,每一个知识点都是有用的,在将来应用时说不准就是这些小细节让你抓耳挠腮的。
用法三:其实也算是用法二的一个拓展,将格式符做一些精细的格式控制
1.输出宽度控制
*我们先看看默认的整型输出(%d):(后面是有一个点的,方便我们实验进行观察)
*我们把%d换成%5d试试看:(怎么回事,is 和64之间怎么拉那么长,其实就是数据输出宽度变成了5,当然如果数据超出5还是要按准确数据输出,不会截断数据的)
*不妨再试一下%-5d呢:(点的作用就出来了,发现了吗,负号就是改变格式对齐方式,使原本的右对齐变为了左对齐,这里要提一点,printf默认的就是左对齐方式)
2.浮点数的小数位数控制
* 同样的,我们先看下默认的浮点数输出:(默认的float单精度浮点型输出6位小数)
*如何控制小数位呢,不妨先看看博主的操作:(发现不同了吗,是的,%后接了一个.和所需数位的数字)
* 那能不能同时限定宽度和小数位呢,当然,可以同时设置输出宽度和小数位数。同样的,看博主操作,然后自己发现不同。(其实就是小数点前控制宽度,小数点后控制小数位,读者大大不妨试一下添个负号呢,博主就不在这向大家展示了,加油!你行的,自己消化一下目前所学的知识)
二、scanf()
scanf()的作用就是用输入设备(如键盘)通过地址将输入的数据传递给地址对应的变量中。【scanf()是由返回值的,并且一定情况下使有用的哦,这里不做太多赘述】
用法其实非常简单scanf("%d",&variable_name);单值输入,占位符,变量地址(&取地址符)。
scanf("%d%c",&v1,&v2);多值输入,分别的占位符,变量各自的地址,中间要用逗号隔开。此外还要注意: " "内部内容除了占位符外如果输入其他字符,必须要按照标准原样输入。比如scanf("%d-%d-%d", &a, &b, &c);除了从键盘输入三个数据外,还需要在每两个数据中间加上“-”符,不然会出错,包括空格也算一个特殊字符,也遵守该规则。
三、其他输入输出函数
1.puts()和gets();//包含在头文件<string.h>中
char c='A';
puts(c);
puts("hello world");
//puts()函数只能输出字符串, 不能输出数值或进行格式变换。
//puts()可以将字符串直接写入puts()函数中。
//gets()函数用来从标准输入设备(键盘)读取字符串直到回车结束, 但回车符不属于这个字符串.
//其调用格式为:gets(s) 其中s为字符串变量(字符串数组名或字符串指针)。
2.fputs()和fgets();//包含在头文件<stdio.h>中
int fputs(const char* str, FILE* stream);
//fputs函数是C语言标准库中的一个输出函数,用于将字符串写入到指定的文件中。
char* fgets(char* str, int num, FILE* stream);
//fgets 函数是C语言标准库中的一个输入函数,用于从文件中按行读取数据或从标准输入(键盘)读取数据。
拓:fputc()和fgetc();
当涉及读取和写入单个字符时,使用 fputc 和 fgetc 是常见的方法。这两个函数用于从文件中读取或写入单个字符。
int fputc(int c, FILE *stream);//将一个字符 c 写入到指定文件流 stream 中。
//若成功则返回写入的字符 c,若发生错误则返回 EOF(-1)。
int fgetc(FILE *stream);//从指定文件流 stream 中读取一个字符。
若成功则返回读取的字符,若发生错误或到达文件结尾则返回 EOF(-1)。
3.putchar()和getchar();
4.更多函数...