이것은 과제물의 일부입니다.C char [] Warning 반환 "로컬 변수의 주소를 반환합니다."
getLine 메서드에서 한 줄의 파일을 읽고 반환하려고합니다.
char *getLine(FILE *input) {
char line[30];
if(fgets(line, sizeof(line), input)!=NULL)
{
return line;
}else{
return NULL;
}
}
이 내가 포인터에 대해 배운 적이없는에서 작동하는 것 같다, 그러나 나는 경고 메시지 warning: function returns address of local variable [enabled by default]
을 제거 할 수 없습니다입니다. 이 경고는 라인 return line;
을 나타냅니다. 필자는 컴파일 할 때 경고 나 오류가 없어야합니다. 내가 뭘 잘못하고 있는지 모르겠다.
내가 찾은 도움의 대부분은 텍스트 줄에 malloc-ing 공간을 제안했지만 다른 클래스에서 일부를 수행했지만 아직 수업에서 다루지 않았습니다. 정말이 일을하는 가장 좋은 방법입니까? 그렇다면 프로그램의 어느 곳에서나 자유롭게 할 수 있습니까?
함수가 반환 될 때 지역 변수가 없어지면 매달린 포인터가 반환됩니다. 속임수를 찾게 해줘. –
힙에 메모리를 할당하려면'malloc'을 사용하십시오. 그리고이 질문은 이미 수많은 질문을 받았습니다. – KBart
이것은 꽤 흔한 실수이기 때문에이 문제가 발생했을 때 수십 개의 게시물을 찾을 수 있습니다 :)이 이유 중 하나는 대부분의 컴파일러가 여러분이하는 일에 대해 경고조차하지 않는다는 것입니다. http : // ideone. com/S5Se71 – LihO