【问题标题】:Passing uninitialized 2D Char Array into function [closed]将未初始化的二维字符数组传递给函数[关闭]
【发布时间】:2012-11-27 07:32:48
【问题描述】:

我正在尝试传递一个未初始化的二维字符数组,该数组在 main 中声明并在函数中定义。

我收到一个分段错误,调试器说:

Program received signal SIGSEGV, Segmentation fault. 0x00000000004005af in initialize_world (array=0x7fffffffdff0, maxRows=6, maxCols=5) at ec.c:33 33 array[i][j]='-';

这是原型、main和函数的代码:

#include <stdio.h>
#include <string.h>
#define ROWS 10
#define COLS 12


void initialize_world(char array[][COLS],int maxRows,int maxCols);

int main(int argc, char *argv[])  {
    char array[ROWS][COLS];
    int numOfRows, numOfCols; 

    numOfRows = 6;
    numOfCols = 5;

    initialize_world(array,numOfRows,numOfCols);

    return 0;
}   

void initialize_world(char array[][COLS],int maxRows,int maxCols)    {
    int i,j;   

    for(i=0; i < maxRows;i++)   {
        for(j=0; j < maxCols;i++)   {
            array[i][j]='-';
        }         
    }
}

【问题讨论】:

  • 为什么会有 ROWS-numOfRows 和 COLS-numOfCols?

标签: c multidimensional-array char parameter-passing


【解决方案1】:

平庸,你使用 i 而不是 j:

for(j=0; j < maxCols;i++) 

错字,你应该写了j++,这就是你溢出的原因。

【讨论】:

  • 复制/粘贴就是这样:P
  • 非常感谢!我很高兴我只是犯了一个简单的错误。
  • 是的,简单总比复杂好,它们很难修复 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-27
  • 2023-04-09
  • 2018-03-12
  • 2011-03-12
  • 2023-03-06
  • 2021-01-19
  • 1970-01-01
相关资源
最近更新 更多