You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言自定义函数无法正常跳转执行问题求助

C语言程序函数跳转异常问题排查与修正

你的代码存在多处语法错误、内存越界和逻辑问题,导致程序无法正常执行函数跳转,甚至直接崩溃。以下是具体问题和修正方案:

核心问题与修正

1. 头文件缺失

代码使用了printf、scanf等标准IO函数,但未包含<stdio.h>头文件,会引发编译错误或运行异常。
修正:在开头添加#include <stdio.h>

2. 函数结构错误

  • void main()后直接跟函数声明,语法违规,main函数的花括号需紧跟声明;且函数声明应放在main函数外部。
  • C语言不允许在函数内部定义其他函数,你将regis_name、regis_dob、regis_pin定义在main内部,属于非法写法,会导致编译失败。
    修正:将所有函数声明放在main函数之前,函数定义放在main函数之后。

3. 数组与指针操作错误

  • 数组下标越界:d[1]、m[1]、y[1],你定义的数组是d[1],仅d[0]为有效下标,访问d[1]会越界访问内存,引发程序崩溃。
  • 指针赋值错误:a1 = a;中a是int变量,a1是int指针,应改为a1 = &a;;d1[1] = &d[1];同样存在下标越界,且这类指针数组完全没必要,直接用普通变量即可。
    修正:删除冗余指针变量,用普通变量存储数据,避免越界。

4. 函数调用与输入错误

  • regis_name中scanf("%s", name[3]);错误:scanf需传入字符串首地址,name本身就是首地址,name[3]是越界字符值,会导致内存访问错误,程序崩溃。
  • regis_dob中regis_pin;缺少括号,这只是引用函数地址,不会调用函数,正确写法是regis_pin();。
  • name数组长度过小:char name[3]仅能存2个字符加结束符,无法正常存储姓名,会引发缓冲区溢出。
    修正:将scanf("%s", name[3]);改为scanf("%s", name);,并增大数组长度为char name[50];。

5. 其他语法错误

  • 代码中存在无效的bd字样,需删除。
  • void main()不符合C标准,应改为int main(),并在末尾添加return 0;。
  • check()函数未定义,调用会引发链接错误,需补充实现或暂时注释调用。

修正后的代码示例

#include <stdio.h>
#include <string.h>

// 函数声明
void regis_name();
void regis_dob();
void regis_pin();
// void check(); // 未实现可先注释

int main()
{
    regis_name(); // 从姓名录入开始,匹配你描述的流程
    return 0;
}

void regis_name()
{
    char name[50]; // 增大数组长度
    printf("ADD YOUR NAME: \n");
    scanf("%s", name); // 传入数组首地址
    regis_dob(); // 跳转至出生日期录入
}

void regis_dob()
{
    int d, m, y; // 用普通变量替代数组,避免越界
    printf("enter date in 'dd' month in 'mm' year in 'yyyy' \n\n");
    printf("enter dd: \n");
    scanf("%d", &d);
    printf("enter mm: \n");
    scanf("%d", &m);
    printf("enter yyyy: \n");
    scanf("%d", &y);
    regis_pin(); // 正确调用函数
}

void regis_pin()
{
    int a;
    printf("ADD A PASS CODE OF 4 DIGIT: \n");
    scanf("%d", &a);
    printf("\n");
    // check(); // 未实现可先注释
}

额外建议

  • 补充check函数实现,完成日期合法性、PIN码长度等校验逻辑。
  • 使用fopen、fprintf函数将用户信息写入文件,完成保存功能。
  • 处理输入缓冲区残留的换行符,避免影响后续输入。

内容的提问来源于stack exchange,提问作者Abhiram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 16:18:34