#include <stdio.h>
int main(){
char testChar;
printf("%d\n", scanf("%c", &testChar));
return 0;
}
我想要的只是打印扫描的字符数。但是,当我的所有输入都具有相同的输出时,即1。
答案 0 :(得分:2)
scanf()
返回成功扫描的项目数。因此,在所有运行中scanf()
成功,因此您的程序打印1。
来自scanf()
:
成功时,这些函数返回输入项的数量 成功匹配并分配;这可能比提供的少 在早期匹配失败的情况下,甚至为零。
如果在输入结束之前到达,则返回值EOF 首次成功转换或匹配失败。 EOF也是 如果发生读取错误则返回,在这种情况下,错误指示符为 设置流(请参阅ferror(3)),并设置errno以指示 错误。
答案 1 :(得分:1)
scanf()
only scans your first character input and returns 1.
答案 2 :(得分:0)
您可以尝试此操作来打印从stdin
读取的字符数。在循环中使用scanf
。
#include <stdio.h>
#include <stdlib.h>
int
main(void) {
char testChar;
int numchar = 0;
printf("Enter characters, CTRL-C to end:\n");
while (scanf("%c", &testChar) == 1) {
numchar++;
}
printf("Number of characters scanned: %d\n", numchar);
return 0;
}