2011-12-11 2 views
1

간단한 질문을 입력 다루기 각 줄은 완전히 무작위이며 각 분리 된 단어는 예를 들어 링크 된 목록이나 트리와 같은 일부 데이터 구조에 추가 될 수 있습니다.찾고 궁금하고 가장 좋은 방법은 입력의이 유형을 처리하는 것에 대해 어떤 조언을 요청, 정말 C

각 줄을 구문 분석하고 구문 분석 하시겠습니까? Getchar()? 모든 단서?

+0

악의적 인 입력의 가능성은 무엇입니까? 1 KiB 이상인 단어를 얻을 수 있습니까? 구두점은 어떻게됩니까? –

답변

2

fgets으로 한 번에 한 줄씩 읽는 것이 가장 좋은 방법 같습니다. 그런 다음 strtok 또는 공백으로 분할하여 비슷한 결과를 반복합니다.

+0

전에 strtok을 보지 못했습니다. 고마워요. – PnP

+2

'strtok()는 처리 할 때 입력을 파괴합니다. 또한 스레드로부터 안전하지 않으므로 파서에서 호출하는 다른 함수가'strtok()'을 사용하고 파서를 호출하는 함수가'strtok()'을 사용하지 않는지 확인해야합니다. 호출 된 함수의 조건은 보통 너무 번거롭지 않습니다. 그러나 라이브러리 코드에서 두 번째 조건 ('strtok()'을 사용하는 호출 함수가 없다)은 실행 가능하지 않다. –

+0

당신이 추천하는 또 다른 방법이 있습니까, strtok에별로 만족스럽지 않습니다 – PnP