c语言第二次调用子函数无效

c语言第二次调用子函数无效
两次输出都是1010

#include<stdio.h>
#include<Windows.h>
int d[4] = {0,0,0,0};
int ddd()
{
    char x, y;
    scanf_s("%c,%c", &x, 10, &y, 10);
    if (x == 'a')
    {
        d[0] = d[0] + 1;
    }
    if (y == 'a')
    {
        d[2] = d[2] + 1;
    }
    return 0;
}
int main()
{
    ddd();
    for (int i = 0; i < 4; i++)
    {
        printf("%d\n", d[i]);
    }
    ddd();
    for (int i = 0; i < 4; i++)
    {
        printf("%d\n", d[i]);
    }

    system("pause");
    return 0;
}
dpsmax
雷与火之歌 回复不显山: a,a
9 个月之前 回复
dpsmax
雷与火之歌 回复不显山: 啊,a
9 个月之前 回复
qq_43479622
BuXianShan 你输入的什么?
9 个月之前 回复

2个回答

正确代码

#include "pch.h"
#include<stdio.h>
#include<Windows.h>
int d[4] = { 0,0,0,0 };
int ddd()
{
    char x, y;
    scanf_s("%c,%c", &x, 10, &y, 10);
    getchar();
    if (x == 'a')
    {
        d[0] = d[0] + 1;
    }
    if (y == 'a')
    {
        d[2] = d[2] + 1;
    }
    return 0;
}
int main()
{
    ddd();
    for (int i = 0; i < 4; i++)
    {
        printf("%d\n", d[i]);
    }
    ddd();
    for (int i = 0; i < 4; i++)
    {
        printf("%d\n", d[i]);
    }

    system("pause");
    return 0;
}

运行结果

图片说明

错误原因

scanf_s是从标准输入缓冲区中读取输入的数据,你两次输入时必然会按回车键,所以第2次输入程序会先读取回车键,由此造成错误。
故应在输入完后添加getchar();把回车键从缓冲区读走。

qq_36870009
W万万 天啊我也是这样,第二次调用函数的时候,输入出错,调试了一下午终于找到原因了!感谢大哥!!!
2 个月之前 回复

scanf_s("%c,%c", &x, 10, &y, 10);
你传入了10,说明char数组长度是10,但是你实际上x y都是单个的char,而不是数组。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问

相似问题

5
javascrpt语言,sort方法传递函数,函数有2个参数为迭代到的数字,怎么得到这个函数的调用?
1
怎么在javascrpt插入javascrpt语言的函数的代码,不是调用函数,是插入函数,查不到的?
2
求助大神!线性表调用插入、删除等子函数的C语言主函数(用switch函数)怎么写?
4
js多次调用同一个函数,怎么返回函数的和之积,怎么实现多次调用函数,还能同时使用所有调用的函数
1
javascrpt语言怎么实现对数组排序,用log输出,不能调用系统函数,
2
python循环调用函数,运行速度太慢
2
C语言编程(二维数组,调用函数)
2
编写排序子函数,将10个数由小到大排序,并在主函数中调用它
1
c语言主函数在调用求平均数的函数后就直接结束了
1
c语言关于主函数调用子函数实现特定功能
1
tensorflow, 将模型抽象到一个函数中,两次调用是一样的计算图吗?
1
怎么用C语言来比较系统调用和库函数读取文本的效率?
2
江湖救急!求C语言输出正弦函数图像代码(要画坐标轴)
1
C#调用C++写的opencv的dll,waitkey函数无效怎么办
2
C#DLL如何调用C#主程序的回调函数?
2
C++拷贝构造函数调用问题
1
C++对象数组赋值调用构造函数问题
0
react 调用函数组件内部方法
1
c语言调用动态库中的函数,不能获取返回值,但C#可以,不知c代码该如何改进?vs2017环境下。
2
C语言大佬求助;输入5个学生成绩,写一个函数,当主函数调用此函数后,能求出平均分、最高分和最低分