欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C语言学习Day3

程序员文章站 2022-07-15 08:45:41
...

常用的数据输入\输出函数

scanf("%c",&a) 修改变量的值,传变量的地址
printf(“a=%c”,a)只是使用变量的值,传变量就行
&

1、scanf函数

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
//scanf等待输入数据
int main()
{
	int i;
	char c;
	scanf("%d", &i);//阻塞函数
	printf("i=%d\n", i);//scanf函数中%d忽略空格,\n.
	scanf("%c", &c);//这里不会阻塞了,因为缓冲区中有数据,
	printf("c=%c\n", c);
}

20
i=20
c=

scanf被调用的时候,我们会在输入20然后回车,这时标准输入缓冲区存入20和\n(回车),但是scanf在读取的时候,只会读取20,然后在缓冲区中删去20,停止循环,缓冲区内还剩下\n。第二个scanf函数发现缓冲区内有字符,会直接读取不会要求我们再次输入。
注意,如果一开始定义的是两个int变量,将第二个scanf中间的%c换成%d,就不会出现上面的问题,因为 scanf%c忽略空格和\n.

2、scanf函数的循环读取

输入多个整数(每次输入都回车)

除了需要用到while循环,还有几个需要注意的点

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int main()
{
	int i, ret;
	while ((ret=scanf("%d", &i))!=EOF)
	{
		printf("i=%d\n", i);
	}
}

正常存储情况:注意结尾需要按三次组合键ctrl+z来结束while循环

10
i=10
9
i=9
^Z
^Z
^Z

F:\C语言学习\day2\Debug\7、scanf函数的循环读取.exe (进程 17120)已退出,返回代码为: 0。
若要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口

如果输入的不是整数型会导致之前的结果无限循环:

10
i=10
a
i=10
i=10
i=10
......无限循环

解决方案:使用fflush函数:作用刷新(清空)标准输入缓冲区。

while (fflush(studin),(ret=scanf("%d", &i))!=EOF)

读取字符串

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int main()
{
	int c;
	while (scanf("%c", &c) != EOF)
	{
		printf("%c\n",c);
	}
}

注意结尾需要按三次组合键ctrl+z来结束while循环

hello
h
e
l
l
o
^Z
^Z
^Z

F:\C语言学习\day2\Debug\7、scanf函数的循环读取.exe (进程 17120)已退出,返回代码为: 0。
若要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口

进行了修改:1、输出 为一行,原来的printf("%c\n",c)被分为printf("%c",c)2与printf("\n")、改变打印的为大写字母c-32

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int main()
{
	int c;
	while (scanf("%c", &c) != EOF)
	{
		if (c != '\n')
		{
			printf("%c", c - 32);//改变输出的大小写
		}//printf("%c\n",c);
		else {
			printf("\n");
		}
	}
}
hello
HELLO^Z
^Z

F:\C语言学习\day2\Debug\8.scanf函数的循环读取.exe (进程 17676)已退出,返回代码为: 0。
若要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口...

scanf’多种数据类型混合输入

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int main()
{
	int i, ret;
	char c;
	float f;
	double d;
	ret = scanf("%d %c%f%lf",&i,&c,&f,&d);
	printf("%d %c %5.2f %5.2f\n",i,c,f,d);
}
 20 a 98.5 98.5
20 a 98.50  98.50

还有一部分明天继续学,还要准备期末考试。。。。太难

相关标签: c语言