关于#C语言#的问题,如何解决?


#include <stdio.h>
#include <string.h>
int main()
{
    long p;
    long q;
    char s[128];
    int stop=0;
    printf("请输入指令的页号和页内地址:\n");
    //scanf("%1d%1d",&p,&q);
    
    if(scanf("%1d%1d",&p,&q)!=2)
    {
        printf("如果选择退出系统,请输入exit!\n");
        scanf("%s",s);
        if(strcmp(s,"exit")==0)
        {//如果输入的为"exit"那么就退出,进入重选页面
            stop=1;
        }
    } 
    printf("%d",stop);
    return 0;
}

上面的代码运行之后直接退出,可是我感觉写的没有问题,也找不到错哪儿了,好崩溃,有人能解答一下吗?

img

输入里面是 %ld 吧, 你写的 是 1d 不是 ld, 数字 1

另外 ,第一个if里的 scanf 输入后,你这里 不止换行符,还有输错的非数字字符, 需要清空一下 输入流

fflush(stdin);

img

if(scanf("%1d%1d",&p,&q)!=2)
->
if(scanf("%ld%ld",&p,&q)==2)

注意是ld,不是1d