Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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
C 整型变量在';这是不应该的_C_Unix_Integer - Fatal编程技术网

C 整型变量在';这是不应该的

C 整型变量在';这是不应该的,c,unix,integer,C,Unix,Integer,我不知道这里发生了什么。我正在做的一个项目是2048游戏。我正在用c语言编程。问题是,我最初宣布分数为0,但尚未实施评分系统,但随机更改为4?(我已经打印出来了) 以下是我的部分代码: for(;;){ printf("Score: %d",user_score); rand_i=rand()%(board_size+1); rand_j=rand()%(board_size+1); while(M[rand_i][rand_j]!=0){

我不知道这里发生了什么。我正在做的一个项目是2048游戏。我正在用c语言编程。问题是,我最初宣布分数为0,但尚未实施评分系统,但随机更改为4?(我已经打印出来了)

以下是我的部分代码:

  for(;;){
    printf("Score: %d",user_score);
    rand_i=rand()%(board_size+1);
    rand_j=rand()%(board_size+1);
    while(M[rand_i][rand_j]!=0){
            rand_i=rand()%(board_size+1);
            rand_j=rand()%(board_size+1);
    }
    rand_num= rand()%2*2+2;
    M[rand_i][rand_j]=(rand_num);
    for(i=0;i<board_size;i++){
            printf("\n");
            for(j=0;j<board_size;j++){
                    if (M[i][j]==0){
                            printf("[    ]");
                    }
                    else printf("[%4d]",M[i][j]);
            }
    }
    printf("\n(w=up, a=left, s=down, d=right, q=quit) > ");
    scanf("%c%c",&user_input);
    //system("clear");
    switch(user_input){
            case 'w':
                    for(j=0;j<board_size;j++){
                            for(i=0;i<board_size;i++){
                                    if(M[i][j]!=0 && i!=0){
                                           for(k=i;k>0;k--){
                                                    if(M[k-1][j]==0){
                                                            M[k-1][j]=M[k][j];
                                                            M[k][j]=0;
(;;)的
{
printf(“分数:%d”,用户分数);
rand_i=rand()%(电路板尺寸+1);
rand_j=rand()%(电路板尺寸+1);
而(M[rand_i][rand_j]!=0){
rand_i=rand()%(电路板尺寸+1);
rand_j=rand()%(电路板尺寸+1);
}
rand_num=rand()%2*2+2;
M[rand_i][rand_j]=(rand_num);

对于(i=0;i我认为你写的是数组M以外的内容

rand_i=rand()%(board_size+1);
rand_j=rand()%(board_size+1);
如果M被声明为int M[board_size][board_size],则rand_i和rand_j可能太大


希望这些有帮助。

当它们不应该听起来像是在数组中写下了一个数组,从而改变了它们的值,从而在别处破坏数据。你应该在UNIX下运行,所以你应该考虑通过ValGRAND运行你的程序,这将告诉你这些错误。(board_size+1)
,其中,
rand_i'可能最终为
baord_size`,这是board size之外的一个项目。NC,数组索引从0到,但不包括数组大小。