首页 > 用户发贴区 > 编程问题提问区 > 请问这是什么意思?
2007
06-21

    有段程序是这样的:


#include <stdio.h>


int main()


{


char str[30];


scanf(“%[^\n]“,str);


printf(“%s\n”,s);


return 0;


}


请问scanf中的 格式字符是什么意思啊?


请问这是什么意思?》有 3 条评论

  1. tjjboluor 说:

         ???

  2. xstar 说:

    找到点东西,这个是scanf读取特定字符的写法!^表示非,只读取[]号中没列出的字符!

    函数名: scanf
    功能: 执行格式化输入
    用法: int scanf(char *format[,argument,...]);

    scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。可以读入任何固有类型的数据并自动把数值变换成适当的机内格式。

    其调用格式为:scanf(“<格式化字符串>”<地址表>);

    scanf()函数返回成功赋值的数据项数,出错时则返回EOF

    其控制串由三类字符构成:

    1。格式化说明符;
    2
    。空白符;
    3
    。非空白符;

    格式化字符串的一般形式为:[赋值抑制标记][字段宽度][精度]类型说明符其中方括号[]中的项为可选项。

    赋值抑制标记*:该字符命令scanf按当前的转换说明符进行转换,但忽略转换后的结果,即不将它赋给任何变量。

    字段宽度:用于指定输入字段的宽度,如果没有指定,则以空白作为结束标记。

    精度:是一个字符,可以是hlL,用于改变它后面的类型说明符的含义。

    L/l 长度修饰符输入数据
    h
    长度修饰符 输入数据
    hh,ll
    同上h,l但仅对C99有效。

    h 用于类型说明符diouxXn前,指定参数是指向short intunsigned short int的指针。

    l 用于类型说明符diouxXn前,指定参数是指向longunsigned long的指针。用于类型说明符aAeEfFgG前,指定参数是指向double的指针。

    L 用于类型说明符aAeEfFgG前,指定参数是指向long double的指针。

    hh 用于类型说明符diouxXn前,指定参数是指向signed charunsigned char的指针。

    ll 用于类型说明符diouxXn前,指定参数是指向long longunsigned long long的指针。


    转换说明符


    格式字符说明

    %a 读入一个浮点值(C99有效)
    %A
    同上
    %c
    读入一个字符
    %d
    读入十进制整数
    %i
    读入十进制,八进制,十六进制整数
    %o
    读入八进制整数
    %x
    读入十六进制整数
    %X
    同上
    %s
    读入一个字符串,并在末尾加上空字符。
    %f
    读入一个浮点数
    %F
    同上
    %e
    同上
    %E
    同上
    %g
    同上
    %G
    同上
    %p
    读入一个指针
    %u
    读入一个无符号十进制整数
    %n
    至此已读入值的等价字符数
    %[...]
    扫描字符集合,只读取方括号里面列出的字符。遇到不匹配的字符、达到指定的宽度或用户按下回车,立即停止读取。为读取]字符,应首先列出它[]…]。在字符串末尾加上空字符。

    %[^...][...]相同,不过只读取方括号中没有列出的字符。
    %%
    %符号,不执行任何赋值操作。

    空白字符

    空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符,空白符可以是space,tab,newline等等,直到第一个非空白符出现为止。

    非空白字符

    一个非空白字符会使scanf()函数在读入时剔除掉与这个非空白字符相同的字符。

  3. tjjboluor 说:

      thank you!

       谢谢斑竹拉!

留下一个回复