C/C++常用输入输出用法细节归纳总结(图文解析)

一.scanf() 与 printf()

  •     在调用printf与scanf的时候一定要包含#include<stdio.h>
  •     printf的用法是:printf("格式控制字符串",输出参数一,输出参数二);
  •     scanf的用法是:scanf("格式控制字符串",输入参数一,输入参数二);
#include<stdio.h>
int main(){
	int a=996;
	printf("%d\n",a);//scanf()同理
	return 0;
}

AC拓展:

1.  %*,表示接收读取但不存对应的指定的类型数据

                用法:scanf(“%d%*c%d”,&a,&b)  例如接收 1 , 2  或者 接收1 / 2  的三个数据时,可以将1赋给a,2赋给b。而中间的字符虽然接收但不用存储,完美的解决用户再输出两个数字时可能有分隔的问题.

2. scanf函数返回值   (说白了就是正确接收多少个参数,返回值就是多少)         

  • 两个整数的正常输入

scanfä¸é¢ï¼ä½ å¯è½ä¸ç¥éçscanfçç¨æ³

  • 两个整数的非正常输入

scanfä¸é¢ï¼ä½ å¯è½ä¸ç¥éçscanfçç¨æ³

  • 两个整数带%*分隔正常输入

scanfä¸é¢ï¼ä½ å¯è½ä¸ç¥éçscanfçç¨æ³

      3.数据输出宽度         

  • printf的格式控制的完整格式:
    %   -   0   m.n   l或h   格式字符

       ①%:表示格式说明的起始符号,不可缺少。
       ②-:有-表示左对齐输出,如省略表示右对齐输出。
       ③0:有0表示指定空位填0,如省略表示指定空位不填。
       ④m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。N指精度。用于说明输出的实型数的小数位数。为指定n时,隐含的精度为n=6位。
       ⑤l或h:l对整型指long型,对实型指double型。h用于将整型的格式字符修正为short型。

        详细说明 ④:

  • %ms:输出的字符串占m列,如字符串本身长度大于m,则突破获m的限制,将字符串全部输出。若串长小于m,则左补空格。

#include<stdio.h>
int main(){
	char s[100];
	scanf("%s",s);
	printf("%10s\n",s);
	return 0;
}

  • %-ms:如果串长小于m,则在m列范围内,字符串向左靠,右补空格。

  • %m.ns:输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格

#include<stdio.h>
int main(){
	char s[100];
	scanf("%s",s);
	printf("%10.4s\n",s);
	return 0;
}

  • %-m.ns:其中m、n含义同上,n个字符输出在m列范围的左侧,右补空格。如果n>m,则自动取n值,即保证n个字符正常输出。

  • %m.nf:输出共占m列,其中有n位小数,如数值宽度小于m左端补空格。

#include<stdio.h>
int main(){
	float f;
	scanf("%f",&f);
	printf("%10f\n",f);
	return 0;
}

补充:浮点数的小数部分 占6位,小数点 占1位,整数部分 占2位,另外浮点数的精度范围表示有限(存在一定误差)详情请参考  https://blog.csdn.net/imJaron/article/details/78392264

  • %-m.nf:输出共占n列,其中有n位小数,如数值宽度小于m右端补空格。

  • %e:数字部分(又称尾数)输出6位小数,指数部分占5位或4位。

  • %m.ne和%-m.ne:m、n和”-”字符含义与前相同。此处n指数据的数字部分的小数位数,m表示整个输出数据所占的宽度。

其他格式请读者自行验证区分。

二.cin.get()   getchar()     cin.getine()   getline()   gets()    scanf()

  • cin.get()  读取单个字符,包括任何前导白色空格字符       详情请参考:http://c.biancheng.net/view/1346.html
  • getchar()  获取一个字符,以回车结束一次输入,缓冲区残留回车符
  • cin.getline()  获取一行字符串

          cin.getline(s,100);  每次读取一整行并把Enter键生成的换行符抛弃,  s必须为字符数组类型,即 char s[100];

  • getline() 是C的,获取一行字符串

          getline(cin,s) //接受一个字符串,可以接受空格并输出,必须包含头文件#include<cstring>, s必须为字符串类型,即 string s;输出时需要按两次回车键才能显示,第一次按回车表示字符串结束,第二次按回车才开始输出。

  • gets()  接受一个字符串,可以接受空格并输出, 以回车结束一次输入,缓冲区不残留回车符
  • scanf();  以tab space 回车等前导空白  结束一次输入,缓冲区残留回车符

文章来源参考链接:

1.https://www.cnblogs.com/michaeljunlove/p/3883717.html

2.https://www.dotcpp.com/wp/786.html

3.https://wenwen.sogou.com/z/q654652327.htm

猜你喜欢

转载自blog.csdn.net/qq_41048982/article/details/90709309