scanf()函数的持续更新

1. 在scanf()中的格式串前添加一个空格,可以匹配所有空白符(空格、Tab、回车键)。但一般不在格式串后添加空格,即格式化输入中后面不能加入空格,会导致要多输入一个数值。

拓展一下: 空白字符和空字符的区别
空白字符:是指在屏幕不会显示出来的字符(如空格,制表符tab,回车换行等)
空字符(注意,不叫空白字符)是指’\0’,或者是字符的编码值为0的字符。

有什么用:

  • 来屏蔽回车的影响(如果不想用这个法法,用getchar()吃掉回车也是可以的)

测试代码

void main()
{
	char c;
	while (1) {
		printf("输入Y:");
		scanf(" %c", &c);
		if (c != 'Y') break;
		printf("----\n");
	}
	printf("end\n");
	system("pause");
}

如果将"%c"前的空格去掉,则程序将提前终止,因为回车键的影响。

2.scanf()函数提供的“%[]”格式串可以用来进行多个字符的输入,并对结束符进行自定义。 对于%[]还可以用^+任意字符(包括 eof)来结束字符串的输入,如%[^EOF]就是直到有EOF 输入,字符串才中止。

有什么用?

  • 自己控制结束符,不再受制于空格结束读取,用scanf("%[^\n]",str)函数一次输入含空格的字符串。

测试代码及其对比

#include<bits/stdc++.h>
using namespace std;
int main() {
    char str[100];
    //用%[]
    scanf("%[^\n]",str);//直到输入回车键,读取才结束,当然不能超过str定义的大小,否则会出错。                      // 此命令与gets(str)效果一样。
    printf("%s\n",str);
   //常用scanf
    scanf("%s",str);
    printf("%s\n",str);
    return 0;
}

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

发布了17 篇原创文章 · 获赞 0 · 访问量 467

猜你喜欢

转载自blog.csdn.net/weixin_43786756/article/details/94964560
今日推荐