대학 과제를 위해 연습에서 C readline
함수를 사용하는 것이 좋습니다. 나는 그 참조를 찾았지만 아직도 그것을 발견하지 못했습니다. 그것은 실제로 존재합니까? 어떤 헤더에? 참조 링크를 게시 할 수 있습니까?C readline 함수
답변
Readline은 libreadline
및 libedit
(libeditline
라고도 함)의 두 곳에 있습니다. 둘 다 동일한 인터페이스를 가지고 있습니다. 차이점은 libreadline은 GPL, libedit은 3 절 BSD로 라이센스된다는 것입니다. 라이센싱은 숙제에 대한 관심사가 아닙니다. 최소한 나는 생각하지 않습니다. 두 라이센스 중 하나를 사용하면 코드를 자유롭게 사용할 수 있습니다. readline에 링크하는 경우, readline
을 제어하는 GPL의 모든 버전을 만족시키는 전체 프로그램 GPL 2 or later
을 작성하십시오. 시스템의 나이에 따라 GPL2 + 또는 GPL3 + 일 수 있습니다. 나는 양쪽 면허를 옹호하지 않고있어, 그건 너에게 달렸어.
참고 설치 중/또는주의를 가지고 (-lreadline
또는-ledit
또는-leditline
)를 필요에 따라 연결 조정합니다. 둘 다 라이브러리이며 표준 C 라이브러리의 일부는 아닙니다.
편집 (군더더기가) :
야생에 프로그램을 해제하는 경우, 그 멋진 제스처는 사용자가 자신이 선택한 readline
로를 구성 할 수 있습니다. 예를 들어, --with-readline
또는 --with-libedit
등이 있습니다. 이로써 최소한 readline
까지 라이센스 선택에 부합하는 바이너리 패키지가 허용됩니다.
링크 : Readline 및 Edit/Editline.
존재하지 않습니다.
그들은 실수로 stdio.h에서 gets()를 참조했습니다.
또한 읽기 매개 변수의 최대 크기가 없기 때문에 매우 안전하지 않은 기능이므로 즉각적인 보안 전체 (조회 버퍼 오버런 공격)가 발생합니다. 아래의 화난 주석처럼 fgets()를 대신 사용할 수 있습니다.
아니요, ** 사용하지 마십시오 ** 'gets'- ever! –
@Jerry +1 ... fgets를 사용 하시겠습니까? – LB40
Jerry를 되돌리려면 :'gets'는 읽는 문자의 수를 제한하도록 지정하지 않습니다. 이것은 고정 길이 인 문자 배열을 읽으므로 나쁜 것입니다. 배열의 길이보다 긴 텍스트를 읽으면 버퍼 오버플로가 발생하여 프로그램이 충돌하거나 덮어 쓰지 않아도되는 메모리가 생길 수 있습니다. –
나는 그것이 표준 기능이라고 생각하지 않습니다.
나는 간단한 구현은 다음과 같이 될 것이다 : 그것은 MAX_LINE까지 읽을 수는 fgets()를 사용
char *Readline(char *in) { char *cptr; if (cptr = fgets(in, MAX_LINE, stdin)) { /* kill preceding whitespace but leave \n so we're guaranteed to have something while(*cptr == ' ' || *cptr == '\t') { cptr++; } return cptr; } else { return 0; } }
- '에'버퍼에 1 문자. 이전 공백을 제거하고 공백이 아닌 첫 번째 문자에 대한 포인터를 반환합니다.
readline()은 명령 히스토리, 탭 완성, 간단한 행 편집 등을 제공합니다. –
@Tim : 네 말이 맞아, Readline 라이브러리가 그러지 만, 나는 그 함수가 라인을 C char 배열로 읽길 원한다고 생각한다. – yassin
나는 그가 도서관에 대한 링크를 원한다고 생각한다. –
- 1. StreamReader ReadLine 함수
- 2. 함수 호출의 다음 줄에 C# ReadLine()을 추가하십시오.
- 3. ReadLine() 콜백
- 4. catch 컨트롤 + 키 in Mono C# Readline
- 5. 완료를 위해 readline() 사용
- 6. Groovy tcp readline
- 7. GNU readline 공백 인용
- 8. Adobe AIR readLine
- 9. Term :: Readline : 인코딩 질문
- 10. 리포 수입의 readline 오류
- 11. OS X에서 readline 6.0 설치
- 12. C에서 GNU Readline 구현하기 도움말
- 13. ASP Readline 비표준 라인 종료
- 14. Java 용 readline 류 라이브러리
- 15. DataInputStream은 readLine() 메소드를 사용하지 않습니다.
- 16. Readline 지원을 Ruby로 컴파일하는 방법
- 17. Java BufferedReader readline blocking? 여기 스케치로
- 18. C# /. NET에서 C++ 함수 호출
- 19. C 프로그램에서 C++ 함수 호출
- 20. objective-C 클래스의 C 함수
- 21. C++ 전달 함수 선언, friend 함수 문제
- 22. C++ : 함수 자체와 똑같이 동작하는 함수 래퍼
- 23. .mm 파일의 함수 내에서 C 함수 호출
- 24. 함수 인수가 함수 선언에서 이미 초기화되었습니다. C++
- 25. DataRow [] 집계 함수 C#
- 26. C++ 함수 포인터 구문
- 27. 익명 함수/재귀 C#
- 28. C++의 인라인 함수
- 29. C 함수 선언
- 30. 구조체에서 함수 반환 (C)
이는'libedit'가 BSD 규칙을 야기한다는 것을 의미합니다. : P – Earlz
예, 나는 그들이 현재 무엇인지 기억할 수는 없지만, 몇몇 시스템 이상에서'libedit'을'libeditline'으로 육체화한 것을 보았습니다. –
또한 라이센스 중 하나에 연결하지 않았습니다. readline은 사용하는 버전에 따라 GPL2 이상 또는 GPL3이 될 수 있지만 3 절 BSD 라이센스는 정적으로 유지됩니다. –