이 함수가 호출에서 반환되면 그 함수에서 아무 것도 인쇄 할 수 없습니다. 함수 내에서 인쇄를 시도하면 제대로 작동하지만 호출 후에는 인쇄되지 않습니다. 무엇을해야할지 모르겠습니다.함수에 대한 포인터 전달
getSchedFile(schFile, sched);
에 :
int *sched;
getSchedFile(schFile, sched);
printf("%d\n",sched[1]);
void getSchedFile (FILE *file, int *schd){
/* Get the number of bytes */
fseek(file, 0L, SEEK_END);
int bytes = ftell(file);
fseek(file, 0L, SEEK_SET);
schd = malloc(bytes * sizeof(int));
int pos = 0, curDigit;
while((fscanf(file, "%d", &curDigit)) != EOF){
schd[pos]=curDigit;
++pos;
}
}
"sched"포인터에 포함 된 값의 사본을 * 함수에 전달합니다. 함수 내에서 * copy * 값을 malloc 메모리의 주소로 설정합니다. 포인터를 포함하는 메모리의 주소가 아니라 포인터에 저장된 값을 전달하기 때문에 변경 내용이 삭제됩니다. '* sched'의 주소를 전달하면, ('sched')가 가리키는 위치를 변경할 수 있습니다 - 일명 변경 사항을 유지할 수 있습니다. – enhzflep
가능한 [C에서 전달하는 char 포인터] (http://stackoverflow.com/questions/14331411/passing-char-pointer-in-c) –
'^^'는 문자 그대로 Google *의 첫 번째 히트입니다. * "전달 포인터가 작동하지 않습니다 C". 질문하기 전에 조사를 해보 시지 않겠습니까? –