zoukankan      html  css  js  c++  java
  • C 语言的一个错误,没找出原因

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

    int
    main(void)
    {
    char str[512];
    char *endpstr;
    int N;
    struct struct_num {
    int highs[N];
    int violate[N];
    };

    struct struct_num num;
    /* 获取N */
    scanf("%d", &N);
    getchar();

    /* 获取身高数据 */
    fgets(str, 512, stdin);

    endpstr = str;
    int cur = 0
    /* while (endpstr) { */
    /* num.highs[i++] = strtol(endpstr, &endpstr, 10); */
    /* printf("%d ", strtol(endpstr, &endpstr, 10)); */
    ;
    /* } */

    return 0;
    }

    这段代码是可以编译通过的,但是,只要我把512, 换成1024,1022,都会得到

    Segmentation fault (core dumped)

    没有任何要求我输入,直接显示错误哦


    如果换乘

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

    int
    main(void)
    {
    char str[1024];
    char *endpstr;
    int N;
    struct struct_num {
    int highs[N];
    int violate[N];
    };
    int cur;
    struct struct_num num;
    /* 获取N */
    scanf("%d", &N);
    getchar();

    /* 获取身高数据 */
    fgets(str, 1024, stdin);

    endpstr = str;
    cur = 0;
    while (endpstr) {
    /* num.highs[i++] = strtol(endpstr, &endpstr, 10); */
    printf("%d ", strtol(endpstr, &endpstr, 10));
    /* ; */
    }

    return 0;
    }

    会显示的错误是:

    Bus error (core dumped)

    如果换成512,也会能够编译通过。这是为什么?

  • 相关阅读:
    多选按钮CheckBox
    DatePicker和DataPickerDialog以及AutoCompleteTextView的基本使用方法
    Broadcast机制(二)
    广播机制(一)
    XML文件解析
    WIFI网络操作
    SQL Server Profiler工具
    SQL Server执行计划的理解
    SQL Server常用元数据函数
    SQL Server数学函数
  • 原文地址:https://www.cnblogs.com/hwy89289709/p/7229049.html
Copyright © 2011-2022 走看看