输入输出(二)

本文详细介绍了C语言中的字符输入函数getchar()和格式输入函数scanf()的使用方法,包括它们的功能、返回值及常见应用示例。通过实例展示了如何处理不同类型的输入数据,如整数、十六进制等,并探讨了输入结束的几种情况。同时,讨论了scanf()函数的格式字符和附加说明符,如宽度限制和抑制符等。最后,总结了输入数据时的结束条件和注意事项。
摘要由CSDN通过智能技术生成

输入输出(二)

一、学习目标

1、掌握字符输入函数的用法。

2、掌握格式输入函数的用法。

3、总结与思考。

二、字符输入函数

字符输入函数getchar

​ 格式:getchar()

​ 功能:从键盘读一字符

​ 返回值:正常,返回读取的代码值;出错或结束键盘输入(Ctrl+d),返回-1

 #include<stdio.h>
   
   int main()
   {
       int ch;
   
       printf(">");
   
       ch = getchar();
  
      putchar(ch);
      putchar('\n');
      
      printf("ch = %d \n",ch);
      
      return 0;
  }  



运行结果:
in_out$ ./getchar
>4
4
ch = 52 
in_out$ ./getchar
>r
r
ch = 114 
in_out$ ./getchar
>�    
ch = -1 

三、格式输入函数

1.格式输入函数:scanf()

​ 格式:scanf(“格式控制串”,地址表)

​ 功能:按指定格式从键盘读入数据,存入地址表指定存储单元中,并按回车键结束

​ 返回值:正常,返回输入数据个数

​ 地址表:变量的地址,常用取地址运算符&

#include<stdio.h>

 int main()
 {
    int ch;
   	printf(">");
   
    scanf("%d", &ch);
      
    printf("ch = %d \n",ch);
      
    return 0;
  }
    
运行结果:
in_out$ ./scanf1 
>65
ch = 65 

2.scanf支持的格式字符(同输入的格式字符)很多

#include<stdio.h>

int main()
{
    int ch; 

    printf(">");

    scanf("%x", &ch);

    printf("ch = %d \n",ch);


    return 0;
}

运行结果:(十进制转成16进制)

$ ./scanf1 
>11
ch = 17 

一种错误形式:(所有提示可以单独写一行提示语句,不要混到里面)

#include<stdio.h>

int main()
{
    int ch; 

    printf(">");

    scanf("please input:%x", &ch);

    printf("ch = %d \n",ch);

    return 0;
}

运行结果:

错误结果:$ ./scanf1 
>11
ch = 32765 

正确结果:$ ./scanf1 
>please input:11
ch = 17 

用n的返回值小于输入变量的个数这个条件来去识别用户输入失败。

#include<stdio.h>

int main()
{
    int ch, n;

    printf(">");

    n = scanf("%x", &ch);

    printf("n = %d ch = %d \n", n, ch);

    return 0;
}

运行结果:(第二个运行结果 输入q 不符合要求(要求为整数))

$ ./scanf1 
>22
n = 1 ch = 34 

$ ./scanf1 
>q
n = 0 ch = 1548841456 

3.scanf函数支持的格式说明符可以带一下修饰符

​ h:用于d,o,x前,指定输入为short型整数

​ l:①用于d,o,x前,指定输入为long型整数;

​ ②用于e,f前,指定输入为double型整数

​ m:指定输入数据宽度,遇空格或不可转换字符结束

​ *:抑制符,指定输入项读入后不赋给变量

#include<stdio.h>

int main()
{
    int ch, n;
    long m;

    printf(">");

    n = scanf("%x%ld", &ch, &m);

    printf("n = %d ch = %d m = %ld\n", n, ch, m);

    return 0;
}

运行结果:(%ld 指定是long型)

$ ./scanf1 
>21 5
n = 2 ch = 33 m = 5

m的用法

#include<stdio.h>

int main()
{
    int y, m, d;

    printf(">");

    scanf("%4d%2d%2d", &y, &m, &d);

    printf("%d.%d.%d\n", y, m, d); 

    return 0;
}

运行结果:

$ ./scanf2
>20201215
2020.12.15

4.用“%c”格式符时,空格和转义字符作为有效字符输入

#include<stdio.h>

int main()
{
    char y, m, d;

    printf(">");

    scanf("%c%c%c", &y, &m, &d);

    printf("%d.%d.%d\n", y, m, d); 

    return 0;
}

运行结果:两次运行结果可以看出在字符型修饰符中空格是参与运行的有效字符(空格的ASCII码为32)

$ ./scanf3
>abc
97.98.99
  
$ ./scanf3
>a b c
97.32.98

5.总结:输入数据时,遇到以下情况认为该数据结束

​ (1)遇空格,TAB,回车

​ (2)遇非法输入(不按照要求输入)

​ (3)遇宽度结束

四、总结与思考

主要介绍了C语言中的两个输入函数,字符输入函数个格式输入函数(重点)

思考:1.格式输入函数有哪些格式字符?

​ i,d:十进制整数

​ x X:十六进制无符号整数

​ o:八进制无符号整数

​ u:无符号十进制整数

​ c:单一字符

​ s:字符串

​ e:指数形式浮点小数

​ f:小数形式浮点小数

​ 2.格式输入函数的格式字符有哪些附加说明符?

​ h:用于d,o,x前,指定输入为short型整数

​ l:①用于d,o,x前,指定输入为long型整数;

​ ②用于e,f前,指定输入为double型整数

​ m:指定输入数据宽度,遇空格或不可转换字符结束

​ *:抑制符,指定输入项读入后不赋给变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值