【发布时间】:2019-11-11 14:52:24
【问题描述】:
你好,我是一个初学者,我一直在代码中看到这个,但我不知道它到底是什么意思...... 像下面的例子
#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;
}
像这里一样,它是转换字符还是存储它的值? (%*c) in scanf 对我来说是个谜,因为我不明白它有点像内存的引用,但不会启动任何变量,它只是指向内存中存储的值...... 我说的对吗?
【问题讨论】:
-
出于兴趣,这个例子出自哪里?
-
您在任何地方都没有
*variable。您是指scanf格式字符串中的*吗?scanf(and family) reference 可能对此有所帮助。 -
请注意,您展示的示例将在不使用 ASCII 字符编码的系统上崩溃。如果您想知道某个字符是否为字母,请使用
isalpha。 -
这只是一个示例 c1 被定义为一个字符,在 scanf 中它读取 %c 和 %*c 后来它打印 ascii 代码和字符我只想知道 *c 在这里做了什么
-
“百分号后面的星号 (*) 禁止分配下一个输入字段,它被解释为指定类型的字段。该字段被扫描但不存储。” 在您的格式规范
"%c%*c"中,这意味着读取一个字符并忽略下一个字符。
标签: c scanf format-specifiers