C语言入门知识点(3)(超详细)

在这里插入图片描述
笔记里面有一些代码的首字母是大写的,自己写时候要用小写,这是OneNote编写时软件的问题。此笔记仅是我个人学习的笔记,接下来会持续更新,希望对初学者有所帮助,如果发现错误,望在评论区指正。

printf()和scanf()

printf

基本用法

形式:printf()
意义:print就是打印的意思,f为format,格式化的意思,表示可以按格式输出文本
注意:printf()本身打印完成后并不自动换行,若想换行,可在其后加换行符(\n),文本内部也是如此。
printf()是前文中提到的标准库中的头文件stdio.h定义的,所以使用以前需要在源码文件头部引入 #include <stdio.h> 这个头文件

占位符

形式:%[字母]
例如:%d
意义:就是这个位置可以用其它值代入
注意:输出文本里可以有多个占位符,且有一一对应关系
使用:

#include <stdio.h> 
int main() 
{ 
printf("%s says it is %d o'clock\n", "lisi", 21); 
return 0; 
}
//lisi says it is 21 o'clock
常用占位符举例

%c:字符
%d:十进制整数
%f:小数(包含float和double)//float - %f double - %lf
%hd:十进制short int
%hu:unsigned short int
%ld:十进制long int
%lu:unsigned long int
%Lf:long doubule 浮点数
%p:指针(用来打印地址)
%s:字符串
%u:无符号整数(unsigned int)
%x:十六进制整数
%zd:size_t 类型

输出格式

printf()可以定制占位符的输出格式(如上)

限定宽度

printf()可以限定占位符的最小宽度
意义:不足n位的用空格补足五位,超过n位的正常输出。
默认是右对齐,如果要调整为左对齐,在%后加-
使用:
- 右对齐

#include <stdio.h> 
int main() 
{ 
printf("%5d\n", 123); // 输出为 "   123" 
return 0; 
}
- 左对齐
#include <stdio.h> 
int main() 
{ 
printf("%-5d\n", 123); // 输出为 " 123  " 
return 0; 
}
- 超出n位正常输出
#include <stdio.h> 
int main() 
{ 
printf("%5d\n", 123456); // 输出为 " 123456" 
return 0; 
}
总是显示正负号

形式:%+[字母]
意义:通常情况下,输出结果只显示 - 而不显示 + ,当需要正号也显示的时候,我们在%后加+,如上形式
使用:

#include <stdio.h> 
int main() 
{ 
printf("%+d\n", 12); // 输出 +12 
printf("%+d\n", -12); // 输出 -12 
return 0; 
}
限定小数位数

形式:%.n[字母]
意义:输出小数时,我们有时候想要保留n位小数或者调整小数的0的个数,这个时候就需要限定小数位数
使用:

// 输出 Number is 0.50 
#include <stdio.h> 
int main() 
{ 
printf("Number is %.2f\n", 0.5); 
return 0; 
}

当限定宽度和限定小数位数同时使用时:
形式:%n.x[字母]
使用:

// 输出为 " 0.50" 
#include <stdio.h> 
int main() 
{ 
printf("%6.2f\n", 0.5); 
return 0; 
}

注意:
最⼩宽度和⼩数位数这两个限定值,都可以⽤ * 代替,通过 printf() 的参数传⼊。
使用:

#include <stdio.h> 
int main() 
{ 
printf("%*.*f\n", 6, 2, 0.5); 
return 0; 
} 
// 等同于printf("%6.2f\n", 0.5);
输出部分字符串

形式:%.n[字母]
意义:与限定小数位数形式类似,代表字符串的前n位正常输出,n位以后舍去
使用:
// 输出 hello

#include <stdio.h> 
int main() 
{ 
printf("%.5s\n", "hello world"); 
return 0; 
}

scanf

基本用法

形式:scanf(“%[字母]”,&[上面定义的变量])
注意:后面的&[变量],&是取地址操作符,当后面的变量是指针变量(如字符串变量)时,不需要加&。
scanf()后面可以加n个变量。依次输入前方占位符(占位符个数和变量个数相同)
意义:与printf类似,scan是扫描的意思,f是格式化,表示按格式输入文本,什么叫扫描,其实就是插入一个“读取”键盘输入的功能
scanf()也是前文中提到的标准库中的头文件stdio.h定义的,所以使用以前需要在源码文件头部引入 #include <stdio.h> 这个头文件
例:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

int main()
{
	int score = 0;
	printf("请输入成绩:");
	scanf("%d", &score);
	//scanf()函数占位符后面的参数需要的是地址
	//&是取地址操作符,&score是取出地址的意思
	printf("成绩是:%d\n", score);
	return 0;

}

运行结果
在这里插入图片描述

scanf的返回值

解释:scanf()的返回值是成功读取的变量个数;如果没有读取到变量,则返回0;如果在成功读取任何数据之前,发⽣了读取错误或者遇到读取到⽂件结尾,则返回常量 EOF (-1)。(EOF - end of file ⽂件结束标志
注意:vs里按3次ctrl+z,能提前结束输入

占位符

scanf()常用的占位符如下,与printf()基本一致,并且除%c以外都会自动忽略起始的空白字符。
这里着重提到以下几个:

%[]:在⽅括号中指定⼀组匹配的字符(⽐如 %[0-9] ),遇到不在集合之中的字符,匹配将会停⽌。
%c:字符,但不会忽略起始空白字符,总是返回第一个字符,无论是否为空格;如果要让%c忽略起始空白字符,要写为“ %c”(在%前加一个空格)。
%s:从第一个非空白字符开始读起,直到遇到空白字符(即空格、换⾏符、制表符等)为止,并且会在字符串变量末尾存储⼀个空字符 \0。

注意:scanf()将字符串读入数组时,不会检测字符串是否超过数组长度。当超过时会报错;此时若要限制读取字符串长度,要写为"%[m]s",m为一个整数,表示读取字符串的最大长度,后面的字符将被丢弃。
例子:

#include <stdio.h> 
int main() 
{ 
char name[11]; 
scanf("%10s", name); 

return 0; 
}
赋值忽略符

解释:有时用户键盘输入不符合预定的格式,此时解析数据会失败。为了避免这一情况,scanf()提供了一个赋值忽略符,只要把*加在任意占位符的百分号后面,该占位符就不会返回值,解析后被丢弃。
例子:

int main()
{
	int year;
	int month;
	int day;
	scanf("%d%*c%d%*c%d", &year, &month, &day);
	printf("%d %d %d\n",year,month,day);
	return 0;
}

*此例子中使用%c来“消除”符号的差异。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值