美文网首页
01 C输入输出函数

01 C输入输出函数

作者: 亨锅锅 | 来源:发表于2018-10-30 13:04 被阅读0次

1、printf

#include <stdio.h>

int main()
{
    /*
     * 1.printf作用:
     * 把指定的数据输出到屏幕上
     * 2.printf格式:
     * printf("输出的内容");
     * printf("格式化字符串", 输出列表项);
     * 3.格式化字符串格式:
     * %[标志][输出宽度][.精度][长度]类型
     */
//    printf("hello c\n");
//    int num = 998;
//    printf("num = %i\n", num);
    // 输出整型常量和变量
    int num = 666;
//    printf("%i\n", num);
//    printf("%i\n", 777);
//    printf("%d\n", num);
//    printf("%d\n", 777);

    // 输出实型常量和变量
    float fValue = 1.11F;
    double dValue = 2.22;
//    printf("%f\n", fValue);
//    printf("%lf\n", dValue);
//    printf("%f\n", 3.33F);
//    printf("%lf\n", 4.44);

    // 输出字符型常量和变量
    char ch = 'a';
    printf("%c\n", ch);
    printf("%c\n", 'b');
    return 0;
}

#include <stdio.h>

int main()
{
    /*
     * 1.printf作用:
     * 把指定的数据输出到屏幕上
     * 2.printf格式:
     * printf("输出的内容");
     * printf("格式化字符串", 输出列表项);
     * 3.格式化字符串格式:
     * %[标志][输出宽度][.精度][长度]类型
     */
    /*
     * 1.宽度格式:
     * %[输出宽度]类型
     * 2.宽度作用:
     * 指定输出内容的位数
     * 如果输出内容实际的宽度大于或者等于指定的宽度, 那么会按照实际输出内容的宽度输出
     * 如果输出内容实际的宽度小于指定的宽度, 那么会在实际输出内容的前面添加空格
     */
//    int num = 999;
//    printf("|%i|\n", num);
//    printf("|%1i|\n", num); // 宽度小于实际位数
//    printf("|%3i|\n", num); // 宽度等于实际位数
//    printf("|%5i|\n", num); // 宽度大于实际位数
    /*
     * 1.标志格式:
     * %[标志]类型
     * %[标志][输出宽度]类型
     * 2.标志作用:
     * +    当输出值为正数时,在输出值前面加上一个+号, 默认不显示
     * 空格   输出值为正数时,在输出值前面加上空格, 为负数时加上负号
     * -    左对齐, 默认右对齐
     * 0    右对齐时, 用0填充宽度.(默认用空格填充)
     */
    /*
    int num = 999;
    printf("%i\n", num);
//    printf("%+i\n", num);
//    printf("% i\n", num);
    printf("|%5i|\n", num); // 指定宽度
    printf("|%-5i|\n", num); // 指定标志和宽度
    */
    int num = 1;
    printf("%i\n", num);
    printf("|%2i|\n", num); // 指定宽度
    printf("|%02i|\n", num); // 指定标志和宽度
    // 2015-01-08
    return 0;
}

#include <stdio.h>

int main()
{
    /*
     * 1.printf作用:
     * 把指定的数据输出到屏幕上
     * 2.printf格式:
     * printf("输出的内容");
     * printf("格式化字符串", 输出列表项);
     * 3.格式化字符串格式:
     * %[标志][输出宽度][.精度][长度]类型
     */
    /*
     * 1.精度格式:
     * %[.精度]类型
     * 2.精度作用:
     * 指定输出小数保留的位数
     * 3.精度其它格式:
     * %[.*]类型
     */
    /*
    float fValue = 1.234567890123456789F;
    double dValue = 1.234567890123456789;
    printf("%f\n", fValue);
    printf("%.2f\n", fValue);
    // 注意点: 单精度的小数, 有效位数只有6-7位, 超出了有效位数之后输出的就是垃圾数据
    //        有效位数是从小数点前面开始计算
    //        1.234567890123456789F  // 1.234567
    //        双精度的小数, 有效位数只有15-16位, 超出了有效位数之后输出的就是垃圾数据
    printf("%.10f\n", fValue);
    printf("%.10f\n", 12345.67123456789F);
    printf("%.10lf\n", dValue);
    */
//    double dValue = 1.234567890123456789;
//    printf("%.*lf\n", 5, dValue);

    char a = 'a';
    short int b = 123;
    int  c = 123;
    long int d = 123;
    long long int e = 123;
    printf("%hhi\n", a);
    printf("%hi\n", b);
    printf("%i\n", c);
    printf("%li\n", d);
    printf("%lli\n", e);
    return 0;
}

2、scanf

#include <stdio.h>

int main()
{
    /*
     * 1.scanf作用:
     * 接收键盘输入的内容
     * 2.scanf格式:
     * scanf("格式化字符串", 地址列表);
     * 3.&取地址符号
     * &变量名称, 可以获取变量对应的内存地址
     */
//    int num;
//    scanf("%i", &num);
//    printf("num = %i\n", num);

//    float fValue;
//    scanf("%f", &fValue);
//    printf("fValue = %f\n", fValue);

//    double dValue;
//    scanf("%lf", &dValue);
//    printf("dValue = %lf\n", dValue);

    char ch;
    scanf("%c", &ch);
    printf("ch = %c\n", ch);
    return 0;
}

#include <stdio.h>

int main()
{
    /*
     * scanf注意点:
     * 1.scanf函数的第二个参数, 只能接受变量地址, 不能接受变量名称
     * 2.scanf函数, 如果接受的不是字符类型的数据, 那么输入的空格,TAB,回车都会被忽略
     * 3.scanf函数的格式化字符串不能以\n结尾, 如果以\n结尾, 那么scanf函数永远无法结束
     * 4.scanf函数的格式化字符串中,如果除了格式化字符串还有别的字符串, 那么必须原样输入, 否则接收的数据就不对
     * 5.scanf函数如果需要同时接收多个非字符类型的数据, 可以通过空格,TAB,回车作为分隔符
     */
    int num;
//    scanf("%i", &num);
//    scanf("%i\n", &num);
//    scanf("num = %i", &num);
//    printf("num = %i\n", num);
    int value;
//    scanf("%i,%i", &num, &value);
    scanf("%i%i", &num, &value);
    printf("%i,%i\n", num, value);

//    int num = 998;
//    printf("num = %i\n", num);
//    int value = 668;
//    printf("%i,%i\n", num, value);
    return 0;
}

#include <stdio.h>

int main()
{
    /*
     * 1.scanf函数会先从输入缓冲区中获取数据, 如果输入缓冲区中没有数据, 那么程序就会阻塞, 等待用户输入数据
     * 2.如果用户输入了数据, scanf函数会将用户输入的数据放到输入缓冲区中, 然后再从输入缓冲区中获取数据
     * 3.如果输入缓冲区中已经有数据了, 那么就不会要求用户输入数据, 会直接从输入缓冲区中获取数据
     *
     * fflush函数:
     * 用于清空输入缓冲区, 当只能在Windows上使用
     * setbuf函数:
     * 用于清空输入缓冲区, 可以在所有平台使用(Windows/Linux/Max OS)
     * 推荐:
     * 以后每次使用完scanf函数都在后面调用一次setbuf函数, 可以降低程序出现问题的几率
     */

    int num1;
    scanf("%i", &num1);
    printf("num1 = %i\n", num1);// 11
//    fflush(stdin); // 清空输入缓冲区
    setbuf(stdin, NULL);// 清空输入缓冲区
    char ch;
    scanf("%c", &ch);
    printf("ch = %c\n", ch);// 空格
//    fflush(stdin); // 清空输入缓冲区
    setbuf(stdin, NULL);
    int num2;
    scanf("%i", &num2);
    printf("num2 = %i\n", num2);// 12
//    fflush(stdin); // 清空输入缓冲区
    setbuf(stdin, NULL);
    return 0;
}

相关文章

网友评论

      本文标题:01 C输入输出函数

      本文链接:https://www.haomeiwen.com/subject/oyggnftx.html