【C语言】输入输出

时间:2020-07-08 00:40:17   收藏:0   阅读:175

输出

putchar(c):字符输出函数

C 语言无I/O语句,I/O操作由函数实现

#include <stdio.h>

字符输出函数

案例:

前置知识:ASCII表

大写A的ASCII值:65

小写a的ASCII值:65+32 = 97

 #include <stdio.h>

int main( )
{
    int a=97;
    char ch = ‘A‘;
    putchar(a);              // 通过ASCII表打印字符a
    putchar(‘\n‘); // 换行
    putchar(ch);             // 直接打印大写字符A
    return 0;
}

printf:格式(化)输出函数

格式:printf("格式控制串", 输出表)

格式符号 作用
i, d 十进制整数
x, X 十六进制无符号整形
o 八进制无符号整型
u 无符号十进制整数
c 单一字符
s 字符串
e,E 指定形式浮点小数
f 小数形式浮点小数
g e和f中较短的一种
%% 百分号本身
修饰符 作用
m 输出数据域宽;当数据长度<m,左补空格;当数据长度>m,按照实际输出(失效)
.n 对于实数,指定小数点后位数,(末位)按照四舍五入规则;对于字符串,指定实际输出位数;
- 输出数据在域内左对齐(缺省右对齐)
+ 指定在有符号数的整数前显示正号
0 输出数值时,指定右边不使用的空位置自动填0
# 在八进制和十六进制数前显示导0,0x
l 在d,o,x,u前,指定输出;和整数转换说明符一起使用,表示一个long int或unsigned long int类型值
ll 在e,f,g前,指定输出精度为double型;和整数转换说明符一起使用,表示一个long long int或unsigned long long int类型值(C99)

输入

getchar字符输入函数

#include <stdio.h>

int main( )
{
    int ch; // 定义一个整形
    printf("#suomi:"); // 通过printf格式化输出函数,输出信息

    ch = getchar(); // 获取用户输入的一个字符
    putchar(ch);    // 输出用户的输入
    putchar(‘\n‘);       // 换行
    printf("ch=%d\n", ch); // 打印输入字符的ASCII值
    return 0;
}

scanf格式输入函数

格式:scanf("格式控制串",地址表);

格式输入函数

格式符号 作用
格式符号 作用
i, d 十进制整数
x, X 十六进制无符号整形
o 八进制无符号整型
u 无符号十进制整数
c 单一字符
s 字符串
e 指定形式浮点小数
f 小数形式浮点小数

修饰符

修饰符 功能
h 用于d,o,x前,指定输入为short型整数
l 用于d,o,x前,指定输入为long型整数;用于e,f前,指定输入weidouble型实数
m 指定输入数据宽度,遇到空格或不可转换字符结束
* 抑制符,指定输入项读入后不赋值给变量

案例1

#include <stdio.h>

int main( )
{
    int ch, n; // 定义一个整形
    printf("#suomi:"); // 通过printf格式化输出函数,输出信息

    n = scanf("%d",&ch); // 获取用户输
    if (n > 0){ // 通过判断n的值判断是否输入成功
        // 错误处理
    }

    // 特别说明:
    n = scanf("please input pass:%x", &ch); // please input pass:为必须输入的值,输入示例: `please input pass:A`

    putchar(‘\n‘);       // 换行
    printf("%d  %d \n",n, &ch);    // 输出用户的输入
    return 0;
}

案例2:获取用户输入时间

#include <stdio.h>

int main() {
    int y, m, d;
    printf("#suomi:");

    // scanf("%d%d%d", &y, &m, &d); // 未优化的代码

    scanf("%4d%2d%2d", &y, &m, &d); // 优化后的代码

    printf("%d:%d:%d\n", y, m, d);
    return 0;
}

小知识总结:

  1. *修饰符:舍弃输入
scanf("%2d %*3d %2d", &a,&b);
// 若输入 12 345 67 则a为12, b为67, *3d表示舍去中间的3位数字
  1. %c格式符,空格和转义字符作为有效字符上输入
scanf("%c%c%c", &c1, &c2, &c3);

// 若输入a b c, %c获取空格和转义符号
// 则c1 为a, c2为空格, c3为b

输入函数留下的垃圾

输入整数+回车时,回车成为垃圾符号

#include <stdio.h>

int main() {
    int a;
    char x;

    printf("#suomi:");
    scanf("%d",&a);
    scanf("%c",&x);

    printf("%d:%c:%d\n", a,x,x);
    return 0;

}

技术分享图片

回收方法:

方法1:getchar()函数

#include <stdio.h>

int main() {
    int a;
    char ch;

    printf("#suomi:");
    scanf("%d",&a);
    getchar(); // 使用getchar()销毁空格
    ch = getchar();

    printf("%d:%c:%d\n", a,ch,ch);
    return 0;
}

方法2:用格式串空格或者%*c来销毁

// 空格:
int x;
scanf(" %c", &x);

技术分享图片

技术分享图片

字符串输入输出

字符串输入函数gets

格式:char * gets(char *s)

功能:从键盘输入一回车结束的字符串放入字符数组中自动添加‘\0‘

说明:

#include <stdio.h>

#define N 5

int main() {
    char s[N+1]; // 应该与目标输入多一个地址空间用于存放\0

    gets(s);
    printf("%s\n", s);
    return 0;
}

字符串输出函数puts

格式:int puts(const char *s);

功能:向显示器输出字符串(输出完,自动换行)

说明:字符数组必须以‘\0‘结束

#include <stdio.h>

#define N 5

int main() {
    char s[N+1]; // 应该与目标输入多一个地址空间用于存放\0

    gets(s);
    printf("%s\n", s);
    puts(s);
    return 0;
}

技术分享图片
技术分享图片

原文:https://www.cnblogs.com/liangchangyou/p/13263795.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!