chenlifeng 发表于 2021-11-17 11:12:26

scanf()函数碰到了一个小问题

int a;
scanf("%d, &a");
语句1;
语句2;
......
如果我运行的时候输入了字符 a, scanf函数会怎么样

{:9_241:}

jhq999 发表于 2021-11-17 11:14:13

啥也没做返回0

chenlifeng 发表于 2021-11-17 11:16:05

jhq999 发表于 2021-11-17 11:14
啥也没做返回0

啥也没做,那它是会被跳过吗

jhq999 发表于 2021-11-17 11:17:25

chenlifeng 发表于 2021-11-17 11:16
啥也没做,那它是会被跳过吗

        int ts=scanf("%d, &a");//输入a
        printf("%d\n",ts);
        ts=getchar();
        printf("%d\n",ts);

chenlifeng 发表于 2021-11-17 11:21:20

jhq999 发表于 2021-11-17 11:17


额,没太明白

jhq999 发表于 2021-11-17 11:25:23

chenlifeng 发表于 2021-11-17 11:21
额,没太明白

ts=0表示scanf没有接收任何东西,下面的getchar()接收了缓存里输入的a(字符a的值是97)

HanYanShuang 发表于 2021-11-17 11:28:49

把输入的字母a的ASCII码存进了a里

chenlifeng 发表于 2021-11-17 11:51:54

jhq999 发表于 2021-11-17 11:25
ts=0表示scanf没有接收任何东西,下面的getchar()接收了缓存里输入的a(字符a的值是97)

好的{:5_105:}

chenlifeng 发表于 2021-11-17 11:53:03

HanYanShuang 发表于 2021-11-17 11:28
把输入的字母a的ASCII码存进了a里

呃, 可是楼上说scanf它啥也不会干

basketmn 发表于 2021-11-17 12:08:50

chenlifeng 发表于 2021-11-17 11:53
呃, 可是楼上说scanf它啥也不会干

是的,在输入类型对不上的时候,scanf什么也不做,只不过数据在缓冲区中

人造人 发表于 2021-11-17 12:38:00

$ cat main.c
#include <stdio.h>

int main(void) {
    int a;
    int res = scanf("%d", &a);
    int ch = getchar();
    printf("%d, '%c'\n", res, ch);
    return 0;
}
$ gcc-debug -o main main.c
$ ./main
123 456
1, ' '
$ ./main
a 456
0, 'a'
$

chenlifeng 发表于 2021-11-17 13:07:18

人造人 发表于 2021-11-17 12:38


$是干什么用的呀(本人还是一只出生不久的小甲鱼)

人造人 发表于 2021-11-17 13:18:11

chenlifeng 发表于 2021-11-17 13:07
$是干什么用的呀(本人还是一只出生不久的小甲鱼)

输入:123 456
输出:1, ' '

输入:a 456
输出:0, 'a'

其他的你忽略就好

人造人 发表于 2021-11-17 13:21:17

chenlifeng 发表于 2021-11-17 19:25:26

人造人 发表于 2021-11-17 13:21


呃,想知道这个窗口透明是怎么搞的{:5_91:}

人造人 发表于 2021-11-17 19:29:32

chenlifeng 发表于 2021-11-17 19:25
呃,想知道这个窗口透明是怎么搞的

操作系统:archlinux + i3wm
开发环境:vim + gcc + gdb

人造人 发表于 2021-11-17 19:32:44

人造人 发表于 2021-11-17 19:35:16

chenlifeng 发表于 2021-11-17 19:25
呃,想知道这个窗口透明是怎么搞的

urxvt + picom
页: [1]
查看完整版本: scanf()函数碰到了一个小问题