c - C 中的结构体数组

标签 c struct

您好,我在尝试初始化结构数组的每个元素时遇到问题。当我尝试将值 0 分配给“bSize”和“msgs”时,它不起作用,因为当我到达 malloc 时它会出错。在 printf 语句中,它打印一个 -1852803823 数字。请原谅我正在尝试找出困惑的代码。

struct message{
    int *data;
    int bSize;
    int msgs;
};

int main(int argc, char *argv[]) {
.....
}

void getSchedFile (FILE *file, int **schd) {
    struct message sMsg[nodeCount];
    const int pakSize = 6;

    // Iniitialise message buffer
    for (int i=0; i<nodeCount; i++){
        sMsg[i].bSize = 0;
        sMsg[i].msgs = 0;
        printf("bSize %d\n",sMsg[i].bSize);
    }

       /* Get the number of bytes */
    fseek(file, 0L, SEEK_SET);
    int time;
    while((fscanf(file, "%d", &time)) != EOF){
        int src;
        fscanf(file, "%d", &src); // get source node id

        // These are here for easier reading code
        int aPos = sMsg[src].bSize;
        int nMsg = sMsg[src].msgs;
        printf("size %d\n", sMsg[src].bSize);

        if (sMsg[src].bSize==0){
                sMsg[src].data = malloc( pakSize * sizeof(int));
            }else{
                sMsg[src].data = realloc(sMsg[src].data, (aPos+pakSize)*sizeof(int));
        }

最佳答案

nodeCount 值从何而来?它是全局变量吗?您应该非常小心地使用全局变量,并尽可能避免使用它们。

在方法参数中传递nodeCount,并正如Charlie提到的,检查它是否> 0

关于c - C 中的结构体数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19441280/

相关文章:

c++ - 结构奇怪的偏移

c - C 源文件中的外部结构

c - 在这种情况下如何不重复自己?相同但参数不同的 C 函数

c - 0 <= -1 怎么可能返回 true?

c - 如何减少 C 中深度递归函数的堆栈帧?

c - Scanf 不会扫描结构内部数据

c - 热衷于将 TXT 文件转换为结构数组 - 段错误?

c++ - 以编程方式提取 .deb 包

c++ - 按位移位,无符号字符

计算C中给定大范围内的完全平方数