gpt4 book ai didi

c++ scanf导致SIGSEGV

转载 作者:太空宇宙 更新时间:2023-11-03 10:33:37 25 4
gpt4 key购买 nike

当我尝试使用函数 scanf 将值分配给动态数组时,我会在第一次分配后收到此错误“收到信号:SIGSEGV(段错误)”,但是当我使用 cin 时,它会工作并且所有值都被正确分配.为什么?我的代码有问题吗?

int main(int argc, char** argv) {
int r = 5;

short* pole[r];


for(int x = 0;x<r;x++){
pole[x] = new short[r];
for(int y = 0;y<r;y++){
scanf("%d",pole[x][y]); //error
//cin >> pole[x][y]; //OK
}
}

最佳答案

您缺少一个符号,%d 应该是 %hd(对于 short int):

scanf("%hd",&pole[x][y]);

您的原始版本正在传递 pole[x][y],而 scanf() 需要一个指针。此外,类型说明符 (%d) 对于 &pole[x][y] 的类型是错误的。

关于c++ scanf导致SIGSEGV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9098960/

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