gpt4 book ai didi

使用 scanf 处理 2D 数组时出现 C 段错误

转载 作者:行者123 更新时间:2023-11-30 19:24:30 25 4
gpt4 key购买 nike

根据“Gottfried”一书的建议,我尝试输入一个数组并以矩阵形式显示数组的内容:

#include<stdio.h>

#define row 2
#define col 3

int main(){
int (*a)[col];
int i,j;

for(i=0;i<row;i++){
for(j=0;i<col;j++){
printf("Enter a(%d,%d)",i,j);
scanf("%d",(*(a+i)+j));
}
}

return 0;
}

输入元素后得到以下输出:

段错误(核心转储)

代码中存在什么问题?它在以前版本的 GCC 中工作吗,所以作者把它写下来了?以同样简单的程度解决问题的正确方法是什么?

最佳答案

正如评论中指出的那样,它不是一个二维数组,而是一个一维指针数组。同样在第二个 for 循环中,您不小心使用了 i<col而不是j<col 。这会起作用

#include<stdio.h>

#define ROW 2
#define COL 3

int main(){
int a[ROW][COL];
int i, j;

for(i = 0; i < ROW; i++){
for(j = 0;j < COL; j++){
printf("Enter a(%d,%d)", i, j);
scanf("%d", (*(a + i ) + j));
}
}
return 0;
}

关于使用 scanf 处理 2D 数组时出现 C 段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60256945/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com