C——输入输出函数

目录:D:\Cpp\Examples\学习C++的每一天\第二天9.29\输入输出函数\putchar

//输入一个 10进制 16 以内的数字,通过%x 把这个数字打印成1个16进制数字;
    int n = 0;
    printf("请输入一个16以内的数字:");
    scanf_s("%d", &n);
    printf("%d\n", n);    //%d,打印出十进制
    printf("0x%04x\n", n);   //%x,打印出十六进制       2x,就是占两个位置: 0x e,

    printf("0x%08x\n", n1);   //08 指定数据的最小输出宽度为8,若不够8位,则补零,大于8位,则按照原位数输出。

printf加强功能,宽度管理:

a)整数宽度:右对齐占8个位置,

  例如:printf("%8d %8d",32,n);右对齐占8个位置;

          printf(“%-8d %-8d”, 32 ,n);左对齐占8个位置;

1、输出函数:

a)  putchar:带入一个ASCII范围的数值,打印这个ASCII码的文本;(等价于printf("%c",99) );

b)  puts:打印一个没有格式化的字符串,puts自带换行,等价于printf("字符串\n");

c)  printf:综合性格式化输出的函数。

对比:

      putchar:将指定数值对应的ASCII字符打印到屏幕上.

          putchar(c)

          (1)当c为一个被单引号(英文状态下)引起来的字符时,输出该字符(注:该字符也可为转义字符);

          (2)当c为一个介于0~127(包括0及127)之间的十进制整型数时,它会被视为对应字符的ASCII代码,输出该ASCII代码                      对应的字符;

          (3)当c为一个事先用char定义好的字符型变量时,输出该变量所指向的字符。

         注意:  该函数的变量及输出结果只能为一个字符

        数字也是字符。printf("%d",m)  等价于  putchar(48 + m)  ;putchar(48)打印的是字符 0 ,那49的ascii码就是字符1,所          以48 + 就可以输出对应的数。

例子:把十进制转为十六进制

        m = (int)pow(16, i);
        m = n /m % 16;
        if (m < 10)     
            putchar(48 + m);         // 等价于   printf("%d", m);    0-9
        else
            putchar('A' + m - 10);       //    A-F

      putc :不但指定数值,而且还指定打印的对象;如: stdout(standard out) ,是指打印到屏幕;

      putc 可以制定一个文件进行打印,可以认为STDOUT是一种特殊的文件。

      putc('x',stdout) 等价于 putchar('x')

          例如:putchar('a'+3);    a的ASCII码是97,加3 = 100,100对应的字符就是 d;

                     putchar(99); 打印结果是c

2、输入函数:

a)  getchar:在键盘上输入一个ASCII码的文本,返回值得到的是一个数值。 c = getchar() 等价于 scanf("%c",&c);

             可能会执行上一行语句的内容(缓冲区,比如说换行)。

             fflush(stdin)可以清理掉前面输入缓冲中剩余的数据,经常在getchar函数之前使用这个函数。

b)  gets:gets (s) 等价于 scanf("%s",s);

c)  scanf:综合性格式化输入;

d)  scanf_s:是避免输入字符串或字符越界的安全版本,VS版本常用这个。

               在使用%c和%s读入字符或字符串时,应在地址参数后附加一个缓冲区边界值

              例如:

              char s[20];
              scanf_s("%s", &s,sizeof(s)-1);  //_countof(s)  ,也可以

猜你喜欢

转载自blog.csdn.net/qq_36079638/article/details/82898928