사용자 입력을 받아서 인쇄하는 간단한 프로그램을 작성하려고합니다. 사용자가 "done"
을 입력 할 때까지이 작업을 계속 수행해야합니다.getline()으로 입력시 세그먼트 오류가 발생했습니다.
아래 코드를 실행하면 "01"을 입력 한 다음 Segmentation Fault (core dumped)
이 표시됩니다.
이 내용은 getline()
과 관련이 있다고 생각하지만 잘 모르겠습니다. 왜 누군가가 내게 왜 작동하지 않고 어떻게 고칠 수 있는지 설명 할 수 있으면 감사하겠습니다.
#include <stdio.h>
#include <stdlib.h>
int main(){
char* line;
size_t size ;
size = 100;
char* done;
done = "done";
printf("0");
while (strcmp(line, "done") != 0) {
printf("1");
getline(&line, &size, stdin);
printf("2");
printf("%s\n", line);
}
return 0;
}
'malloc '이 아닌 객체를'getline'에 넘길 수 없습니다. http://www.gnu.org/software/libc/manual/html_node/Line-Input.html * getline을 호출하기 전에 * lineptr에 malloc *으로 할당 된 버퍼의 주소를 * n 바이트 길어야합니다. 이것에 대한 이론적 근거는 'getline'은 버퍼 크기가 라인을 유지하기에 충분하지 않은 경우 객체를 '재 할당'할 수 있다는 것입니다. – ouah
예, 죄송합니다. 나는 그것을 반영하기 위해 해답을 편집했다. –
나는 이것을 6 개월 동안 붙들 렸고, 고마워. –