C语言的输入输出 I/O(吉林大学 孙立鑫)

  对于初学者而言,C语言的输入输出是必备的基础内容,也是学习的重点。本篇文章让我们一起走进C语言学习的基础,输入和输出。

  C语言标准输入输出头文件:  #include<stdio.h>

  本文我们重点介绍scanf,getchar,gets,printf几类函数以及应用。

目录

1.scanf(输入函数)

 a.整形输入

 b.浮点型输入

 c.字符输入

 (过滤前导字符)

 d.字符串输入

2.printf(输出函数)

 a.printf输出规则   

 b.格式控制符

 c.输出控制符

 d.转义字符

 


1.scanf(输入函数) (要求严格的编译器上要求写成scanf_s)

  注:在使用此函数输入时,可以使用非输入控制符,但建议永远不要用,引号外除了输入控制符建议不要添加别的。

#include<stdio.h>
int main(void)
{
 int a,b,c;
 scanf("%d,%d,%d",&a,&b,&c);
 printf("%d %d %d",a,b,c);
 return 0;
}

  其中的第五行写成了:scanf("%d,%d,%d",&a,&b,&c); 比如要输入1 2 3,只能输入成1,2,3回车

其中的逗号就是非输入控制符。建议不要用,永远不要用,防止造成不必要的麻烦。

 a.整形输入 

  整形输入的输入控制符是%d %ld %lld

int声明 %d long声明 %ld long long 声明 %lld

这里以int 声明为例。

  单个整型数字的输入:

#include<stdio.h>
int main(void)
{
 int a;
 scanf("%d",&a);
 return 0;
}

  多个整型数字的输入

#include<stdio.h>
int main(void)
{
 int a,b,c;
 scanf("%d%d%d",&a,&b,&c);
 return 0;
}

 或者写成如下形式

#include<stdio.h>
int main(void)
{
 int a,b,c;
 scanf("%d %d %d",&a,&b,&c);
 return 0;
}

   scanf("%d %d %d",&a,&b,&c);    %d之间有无空格对于整形数字的输入无影响。

b.浮点数输入

浮点数的输入控制符为%f %lf %llf

float声明 %f double声明 %lf long double声明 %llf

以float 声明为例

单个浮点数输入

#include<stdio.h>
int main(void)
{
 float a;
 scanf("%f",&a);
 return 0;
}

多个浮点数输入类比上述多个整型数字输入。

c.字符输入

char 声明字符 %c 是输入控制符

另外,字符的输入也可以用getchar()函数

对于要求严格的编译器,应写成

char a;

scanf_s("%c",&a,1);

#include<stdio.h>
int main(void)
{
 char a;
 a=getchar();
 return 0;
}
#include<stdio.h>
int main(void)
{
 char a;
 scanf("%c",&a);
 return 0;
}

多个字符的输入

采用过滤前导字符的方式

#include<stdio.h>
int main(void)
{
 char a,b,c;
 char ch1,ch2;
 scanf("%c",&a);
 ch1=getchar();
 scanf("%c",&b);
 ch2=getchar();
 scanf("%c",&c);
 printf("%c %c %c",a,b,c);
 return 0;
}

不采用过滤前导字符的方式(尤其推荐)

#include<stdio.h>
int main(void)
{
 char a,b,c;
 scanf(" %c %c %c",&a,&b,&c);
 printf("%c %c %c",a,b,c);
 return 0;
}

用空格来帮助解决,scanf里每个%c前面都要有空格。

d.字符串输入

%s 是输入控制符

有空格的输入gets()   要求严格的编译器要求写成gets_s()   推荐使用

#include<stdio.h>
int main(void)
{
 char a[10];
 gets(a);
 printf("%s",a);
 return 0;
}

无空格的输入

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

要求严格的编译器要求写成scanf_s("%s",a,10);  加上字符数组大小

多个字符串的输入

#include<stdio.h>
int main(void)
{
 char a[10],b[10],c[10];
 scanf("%s %s %s",a,b,c);
 printf("%s %s %s",a,b,c);
 return 0;
}

2.printf(输出函数)

a.printf输出规则   

printf(“     ”,);引号里可添加非输出控制符 引号后面加逗号,逗号后面按照前面输出控制符的顺序填上变量。

b.格式控制符

1.减号  -

输出默认右对齐 减号左对齐

#include<stdio.h>
int main(void)
{
 printf("%5d\n",1111);
 printf("%-5d",1111);
 return 0;
}

 输出如下

 1111
1111

2.加号 +

加号可以加上数字的符号 正数加正号,负数加负号。

#include<stdio.h>
int main(void)
{
 printf("%+5d %+5d",1000,-1000);
 return 0;
}

输出如下

+1000 -1000

3.空格 与加号类似前面会出现占位符号,只不过正数是空格,负数是负号。

#include<stdio.h>
int main(void)
{
 printf("% 5d % 5d",1000,-1000);
 return 0;
}

输出如下

 1000 -1000

4.数字0 补位

#include<stdio.h>
int main(void)
{
 printf("%05d %05d",1000,-1000);
 return 0;
}

输出如下

01000 -1000

由此我们明白,符号也有一个占位。

5.#号键 (不常用,在此不做讲解)

6.整型数字 %d 前面的数字表示占位(以上已做展示)

7.浮点数字 %f 前面的m.n表示总占位和精度(小数点也占位)

#include<stdio.h>
int main(void)
{
 float a=111111.1111;
 printf("%14.2f",a);
}

输出如下(前面有5个空格)

     111111.11

c.输出控制符

1.整形 %d %ld %lld

2.浮点型 %f %lf %llf

3.无符号整形 %u

4.指针%p

#include<stdio.h>
int main(void)
{
 float a=111111.1111;
 float* b;
 b=&a;
 printf("%p",b);
}

输出如下

000000000061FE14

5.x/X 十六进制无符号整数 x X 控制大小写 %#x %#X(有0x)

#include<stdio.h>
int main(void)
{
 int a=111111;
 printf("%X %x",a,a);
}

输出如下

1B207 1b207
#include<stdio.h>
int main(void)
{
 int a=111111;
 printf("%#X %#x",a,a);
}

输出如下

0X1B207 0x1b207

6.%o %#o (不带零 带零的八进制整数)

#include<stdio.h>
int main(void)
{
 int a=111111;
 printf("%o %#o",a,a);
}

输出如下

331007 0331007

7.%c 字符输出

8.%s 字符串输出

d.转义字符

 1.\a 响铃

 2.\n 换行

 3.\r 回车

 (其余不常用 不作说明)

  总结:C语言的输入输出,是我们学习一切程序设计的基础。此篇文章是我学习程序设计时的心得体会,难免有错误和不全。希望本篇文章可以对你有所帮助。

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孙立鑫 吉林大学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值