2

main で宣言されている初期化されていない 2-D char 配列を渡して、それを関数で定義しようとしています。

セグメンテーション エラーが発生し、デバッガーには次のように表示されます。

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

プロトタイプ、メイン、関数のコードは次のとおりです。

#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]='-';
        }         
    }
}
4

1 に答える 1

7

j の代わりに i を使用しています。

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

タイプミスです。j++ と書くべきだったので、オーバーフローしました。

于 2012-12-09T20:46:11.477 に答える