Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
scanf()以前正常工作时导致分段错误_C - Fatal编程技术网

scanf()以前正常工作时导致分段错误

scanf()以前正常工作时导致分段错误,c,C,我目前正在用C语言编写康威的《生活游戏》的一个版本,作为我学位课程作业的一部分。在代码中,我要求用户输入一个整数,表示描述游戏初始条件的菜单项。 当我自己测试围绕它的代码时,它工作得很好,正确地扫描值并打印出来,等等。 然而,我现在继续我的代码,并开始开发下一个阶段,现在突然我得到了一个分段错误,使用printf,我精确地指出了这个与之前工作的scanf语句完全相同的错误。 有人能告诉我为什么scanf突然出现这样的错误,这样我就可以解决这个问题了 我的代码如下: #include <st

我目前正在用C语言编写康威的《生活游戏》的一个版本,作为我学位课程作业的一部分。在代码中,我要求用户输入一个整数,表示描述游戏初始条件的菜单项。 当我自己测试围绕它的代码时,它工作得很好,正确地扫描值并打印出来,等等。 然而,我现在继续我的代码,并开始开发下一个阶段,现在突然我得到了一个分段错误,使用printf,我精确地指出了这个与之前工作的scanf语句完全相同的错误。 有人能告诉我为什么scanf突然出现这样的错误,这样我就可以解决这个问题了

我的代码如下:

#include <stdio.h>
#include <math.h>
#include <string.h>
#define WIDTH 60
#define HEIGHT 60
#define NAMELENGTH 128

void initGrid(int choice, int grid[][WIDTH]){
    int a,b;
    for(a=0;a<HEIGHT;++a){
        for(b=0;a<WIDTH;++b){
            grid[a][b]=0;
        }
    }
    switch(choice){
        case 1 :
            grid[6][3]=1;
            grid[7][3]=1;
            grid[6][4]=1;
            grid[7][4]=1;
            grid[6][13]=1;
            grid[7][13]=1;
            grid[8][13]=1;
            grid[5][14]=1;
            grid[4][15]=1;
            grid[4][16]=1;
            grid[9][14]=1;
            grid[10][15]=1;
            grid[10][16]=1;
            grid[7][17]=1;
            grid[5][18]=1;
            grid[9][18]=1;
            grid[6][19]=1;
            grid[7][19]=1;
            grid[8][19]=1;
            grid[7][20]=1;
            grid[4][23]=1;
            grid[5][23]=1;
            grid[6][23]=1;
            grid[4][24]=1;
            grid[5][24]=1;
            grid[6][24]=1;
            grid[3][25]=1;
            grid[7][25]=1;
            grid[2][27]=1;
            grid[3][27]=1;
            grid[7][27]=1;
            grid[8][27]=1;
            grid[4][37]=1;
            grid[5][37]=1;
            grid[4][38]=1;
            grid[5][38]=1;
            break;
        case 2 :
            grid[29][29]=1;
            grid[28][29]=1;
            grid[30][29]=1;
            grid[29][28]=1;
            grid[28][30]=1;
            break;
        default :
            break;
    }
}

int main() {
    int currGrid[HEIGHT][WIDTH];
    //int nextGrid[HEIGHT][WIDTH];
    char name[NAMELENGTH];
    printf("Welcome to Conway's Game of Life. To Begin, What Is Your Name?\n");
    scanf("%[^\n]%*c", name);
    int menSelect;
    printf("Hello %s, Please Enter the Integer Next to the Item Below That Describes How You Would Like Your Game of Life to     Initially Be Set Up\n \n 1. Gosper's Glider Gun \n 2. R-Pentomino\n ", name);
    for(;;){
        int checkIn=scanf("%d",&menSelect);
        if(checkIn!=1){
            fprintf(stderr,"Scanf Has Failed to Read In Any Values\n");
        }
        if(menSelect!=1 && menSelect!=2){
            fprintf(stderr,"%s, %d Is Not a Valid Selection\nPlease Try Again\n",name,menSelect);
        }else{
            break;
        }
    }
    initGrid(menSelect,currGrid);
    return 1;
}
#包括
#包括
#包括
#定义宽度60
#定义高度60
#定义名称长度128
void initGrid(int-choice,int-grid[][宽度]){
INTA,b;

对于(a=0;a未定义的行为,因为您如何将网格归零。看起来像是复制/粘贴错误

for(b=0;a<WIDTH;++b){
       ^^^

for(b=0;a未定义的行为,因为您如何将网格归零。看起来像是复制/粘贴错误

for(b=0;a<WIDTH;++b){
       ^^^

用于(b=0;AgEEZ,我真的忽略了今晚的简单错误。甚至不是一个复制粘贴的工作,只是我是一个临时工。非常感谢。而不是使用<代码> PrimTf<代码>来查找您的崩溃,而是考虑使用一个调试工具,如<代码> GDB 。这很可能指向您的冒犯循环。我通常使用<代码> GDB ,然而,我的家用笔记本电脑目前仅限于chromebook(由于各种原因,我无法将其置于开发者模式)因此,我没有在这里使用它。Geez,我真的忽略了今晚的简单错误。甚至不是一个复制粘贴工作,只是我是一个随机数。非常感谢。而不是使用<代码> PrimTf<代码>找到你的崩溃,而是考虑使用一个调试工具,如<代码> GDB 。这很可能指出你是一个冒犯的循环。通常使用
gdb
,然而,我的家用笔记本电脑目前仅限于chromebook(由于各种原因,我无法将其置于开发者模式)因此,我在这里没有使用它。你应该使用git进行源代码管理,你可以
diff
它,并找出是什么改变了你的代码,是什么破坏了你的代码。正式记录并创建了git帐户。我是整个编程游戏的相对新手,所以所有建议都很感谢。你应该使用git进行源代码管理,你可以diff
it,找出是什么改变了你的代码,是什么破坏了你的代码。正式记录并创建了git帐户。我是整个编程游戏的新手,因此非常感谢所有建议。