저는 알고 있습니다. 다른 세분화 오류 질문 ... 교수용 함수 enterValue
을 실행하려고하지만 세그먼트 오류 오류가 계속 발생합니다. 나는 잘못한 일을하고 있는가, 아니면 그의 코드에 잡히지 않은 버그가 있는가? int* length;
선언은 실제로 원래 코드로 int length;
으로 작성되었습니다. 최종 인수 valuePtr
이 int에 대한 포인터가되도록 의도되었으므로, 그 인수는 length
을 다음과 같이 정의해야한다고 생각합니다. 나는이 프로그램을 실행할 때int 포인터 인수를 사용하는 동안 C에서 세분화 오류가 발생했습니다.
#include <stdlib.h>
#include <stdio.h>
#define MAX_LINE 256
char line[MAX_LINE];
int* length;
void enterValue (const char* descriptionPtr,
int min,
int max,
int* valuePtr
)
{
do
{
printf("Please enter the %s (%d-%d): ",descriptionPtr,min,max);
fgets(line,MAX_LINE,stdin);
*valuePtr = strtol(line,NULL,10);
}
while ((*valuePtr < min) || (*valuePtr > max));
}
int main()
{
enterValue ("number of numbers", 1, 256, length);
return(EXIT_SUCCESS);
}
, 나는 다음과 같은 얻을 :
Please enter the number of numbers (1-256): 4
Segmentation fault
오 세상에, 나는 그런 바보 야. 모든 사람의 시간을 낭비해서 죄송합니다 :-) – user1185790
@ user1185790 : 땀이 없습니다. 실수하는 것은 우리가 배우는 방법입니다. 처음에 모든 것이 "잘된 것"이라면 어떻게 배울 수 있을지 상상해보십시오! – wallyk