1. '\r' 表示回车,但不换行,即将光标移到当前行的起始位置;

  2. 转义序列出现在字符串中时是按单个字符计数的,如 abc\n 的长度是 4;

  3. 每个字符都有一个等价的整型值与其相对应,这个整型值就是该字符的 ASCII 码,可将 char 型看成是一种特殊的 int 型,如英文字符的大小写转换,大写 + 32 即为小写

  4. Unicode 字符集为各种语言中的额每个字符设定统一且唯一的数字编号;

  5. printf() 函数中的格式修饰符 .n 显示精度,如 %.2f

  6. scanf() 函数格式:

    scanf(格式控制字符串, 参数地址表);

    格式控制字符串中不能包含 \n 等转义字符;

  7. 如果 scanf() 函数的格式控制字符串中存在除格式说明符以外的其它字符,那么这些字符必须在输入数据时由用户从键盘原样输入;

  8. 格式修饰符中的域宽指定了输入数据的宽度,将按此宽度截取所需数据;

  9. 使用忽略输入修饰符 * 来实现用户以任意字符作为分隔符进行数据的输入;

  10. %*2d 中的 *忽略输入修饰符,表示对应的输入项(这里为两个 int)在读入后不赋值给相应的变量;

  11. scanf() 遇到非法字符(不符合格式控制字符串的字符)时输入结束;

  12. scanf() 返回 EOF 值(在 stdio.h 中被定义为 -1 的宏常量)时,表示函数调用失败,即未能读入指定的数据项数;

  13. 在用 %c 格式读入字符时,空格字符和转移字符(包括回车)都会被当做有效字符读入;

  14. %c 格式符的一个错误即解决方法:

    scanf("%d", &a);
    scanf("%c", &b);

    错误:第一个 scanf() 的回车会被第二个 scanf()%c 捕获。
    解决方法:
    (1) 在两个 scanf() 间用 getchar() 将缓冲区中的回车读入。
    (2) 在 %c 前面加一个空格(经测试只能是空格),以忽略前面数据输入时存入缓冲区的回车符。

  15. scanf() 没有精度修饰符,即用 scanf() 输入实型数据时不能规定精度;

  16. 练习:从键盘输入一个小写英文字母,将其转换为大写后,输出大写英文字母及其十进制的 ASCII 码值:

    #include <stdio.h>
    
    main() {
        char a;
        printf("Please input a lowcase character: \n");
        scanf("%c", &a);
        a -= 32;
        printf("Upcase: %c\nASCII: %d\n", a, a);
    }

Comments