Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
scanf中*变量的用法以及我们为什么使用它?_C_Scanf_Format Specifiers - Fatal编程技术网

scanf中*变量的用法以及我们为什么使用它?

scanf中*变量的用法以及我们为什么使用它?,c,scanf,format-specifiers,C,Scanf,Format Specifiers,您好,我是一个初学者,我一直在代码中看到这一点,但我不明白它到底意味着什么。。。 就像下面的例子 #include<stdio.h> int main(void) { char c1; do { scanf_s("%c%*c", &c1, 1); if ((c1>='a' && c1<='z')||(c1 >= 'A' && c1 <= 'Z'))

您好,我是一个初学者,我一直在代码中看到这一点,但我不明白它到底意味着什么。。。 就像下面的例子

#include<stdio.h>

int main(void)
{
    char c1;
    do
    {
        scanf_s("%c%*c", &c1, 1);
        if ((c1>='a' && c1<='z')||(c1 >= 'A' && c1 <= 'Z'))
        {
            printf("%c  %d", c1, c1);
        }

    } while (c1!=0);
    return 0;
}
#包括
内部主(空)
{
字符c1;
做
{
scanf_s(“%c%*c”&c1,1);
如果((c1>='a'&&c1='a'&&c1来自C标准(7.21.6.2 fscanf功能)

3.…在%之后,以下内容按顺序显示:

-抑制字符的可选赋值*

-一个可选的大于零的十进制整数,用于指定 最大字段宽度(以字符为单位)

-一个可选的长度修改器,用于指定接收区域的大小 反对

-一种转换说明符字符,用于指定 要应用的转换

和(K.3.5.3.2 fscanf_功能)

4除了c、s、, 和[转换说明符应用于一对参数( 分配抑制由一个 *

所以在这次通话中

scanf_s("%c%*c", &c1, 1);

格式
%*c
禁止将读取字符指定给参数。通常这种方法用于从缓冲区读取用户按Enter键后出现的新行字符。

出于兴趣,此示例来自何处?您没有
*变量
。您指的是
*scanf
格式字符串?A中的code>可能会对此有所帮助。请注意,您所展示的示例将在不使用ASCII编码的系统上出现故障。如果您想知道字符是否为字母,请使用。它只是示例c1被定义为字符,在scanf中读取%c和%*c,然后打印ASCII代码和character我只想知道*c在这里做了什么“百分号后面的星号(*)禁止分配下一个输入字段,该字段被解释为指定类型的字段。该字段已扫描但未存储。”在格式规范中
“%c%*c”
意味着读取一个字符而忽略下一个字符。