【发布时间】:2021-03-31 19:09:52
【问题描述】:
由于某种原因,我的第二个 scanf 出现了分段错误。我特别困惑,因为它适用于第一个,但不适用于第二个scanf。以下是相关代码:
int main() {
NodePtr* startPtr = NULL;
int base;
int number;
getInputs(&base, &number);
convertNumber(startPtr, base, number);
return 0;
}
void getInputs(int* basePtr, int *numberPtr){
printf("Please enter a base number system (2-10 or 16): ");
scanf("%d", basePtr);
while(*basePtr <2 || *basePtr >= 11 && *basePtr <=15 || *basePtr >= 17 ){
printf("\nInvalid input! Please choose a base from 2-10, or 16: ");
scanf("%d", basePtr);
}
printf("\nWhat decimal number would you like to convert: ");//asks for a number to convert
printf("\n%p\n", numberPtr);
scanf("%d", numberPtr);
}
输出:
Please enter a base number system (2-10 or 16): 2
What decimal number would you like to convert:
0x7ffc6b599a34
3
Segmentation fault (core dumped)
【问题讨论】:
-
我运行它时不会出现段错误。你确定不是你没有提供的convertNumber函数中吗?
-
startPtr仍然是NULL,当你将它传递给convertNumber()时,无论如何。 -
此代码不完整。您可以编辑帖子以包含
convertNumber的函数定义和NodePtr的结构定义 -
另外,我认为它与 convertNumber 函数没有任何关系,因为两个函数调用之间的任何 printf 命令都不起作用。
-
先尝试声明
void getInputs(int* basePtr, int *numberPtr);,然后再调用main()。