C语言-输入与输出


C语言-输入与输出

标准输入输出

需通过#include命令引入stdio.h头文件
#include <stdio.h>

输入输出缓冲区

输入输出缓冲区的作用
我们从磁盘里取信息,我们先把读出的数据放在缓冲区,计算机再直接从缓冲区中取数据,等缓冲区的数据取完后再去磁盘中读取,这样就可以减少磁盘的读写次数,再加上计算机对缓冲区的操作大大快于对磁盘的操作,故应用缓冲区可大大提高计算机的运行速度。

scanf

格式化读入数据并赋值给变量,返回成功赋值变量的个数,失败返回EOF(End Of File)

格式:scanf(“占位符与其他字符”,变量地址);

例1:

1
2
3
4
5
6
7
8
9
#include <stdio.h>
int main()
{
int a,b;
scanf("%d%d",&a,&b);
//33 55
return 0;
}

例2:

1
2
3
4
5
6
7
8
#include <stdio.h>
int main()
{
char a[20]={0};
scanf("%s",a);
//liu
return 0;
}

注:当读入字符数组时,字符数组前并不加取址符,scanf遇到空格结束当前变量输入

printf

格式化输出,返回成功输出的变量个数,失败返回-1

格式:printf(“占位符与其他字符”,变量);或printf(“字符串常量”);

1
2
3
4
5
6
7
8
#include <stdio.h>
int main()
{
int a=2,b=3;
char c='L';
printf("%d,%d,%d,%c\n",a,b,a+b,c);
return 0;
}

gets

读入一整行字符(在C11以后的版本中已经弃用)

1
2
char ch[100];
gets(ch);

puts

输出一个字符串常量,并自动添加换行符
puts("hello");//等同于printf("hello\n");

getchar

读入单个字符

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
int main()
{
char a=getchar();
char b=getchar();
//输入:cd
printf("%c,%c",a,b);
//输出:cd
//注:如有空格或者换行会将空格或换行也作为一个字符输入进去
return 0;
}

错误示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
int main()
{
char a[20];
char b;
scanf("%s",a);
//输入abc然后回车,回车也会算为一个字符,即'\n',所以实际上输入的字符串为"abc\n",这些字符串被放入输入缓冲区
//其中abc被scanf取走,但还余留一个\n在输入缓冲区内
printf("请输入Y或N:");
b=getchar();
//getchar()从输入缓冲区内将\n取走并赋值给b,所以b为'\n'
if(b=='Y')
{
printf("成功");
}
else
{
printf("失败");
}
//所以最终打印结果为"失败"
return 0;
}

成功示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
int main()
{
char a[20];
char b,c;
scanf("%s",a);
//输入"abc sdad\n",放入输入缓存区,scanf从输入缓存区取走"abc",输入缓存区还剩下" sdad"
printf("请输入Y或N:");
while((b=getchar())!='\n')
{
;
}
//从输入缓存区剩下的字符串取第一个字符并赋值给b,若b不等于'\n',则条件为真,继续循环,取下一个字符赋值给b,直到b等于'\n',条件为假,跳出循环。
c=getchar();
if(c=='Y')
{
printf("成功");
}
else
{
printf("失败");
}
return 0;
}

putchar

输出单个字符

1
2
3
4
5
6
7
8
9
#include <stdio.h>
int main()
{
char a='A';
char b='\n';
putchar(a);
putchar(b);
return 0;
}

常见的占位符

十进制整数 %d
十六进制整数 %x
八进制整数 %o
单精度浮点型 %f
双精度浮点型 %lf
字符 %c
字符串 %s
指针 %p
无符号十进制整数 %u


Author: ljs
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source ljs !
评论
  TOC