2009-11-02 6 views
1

나는 여기에 작동하지 않았다 내가 노력 두 가지의 간단하게 입력 파일 (디버깅 목적으로 라인을 인쇄에 num_lines 라인을 건너 뛸 코드의 짧은 비트를 썼다 :OCaml에서 세 가지 fscanf 호출의 차이점은 무엇입니까? .

for i = 0 to num_lines do 
    print_endline (fscanf infile "%s" (fun p -> p)); 
done;; 

for i = 0 to num_lines do 
    print_endline (fscanf infile "%S\n" (fun p -> p)); 
done;; 

을하지만이 사람은 일을했다 :

for i = 0 to num_lines do 
    print_endline (fscanf infile "%s\n" (fun p -> p)); 
done;; 

내가 fscanf에 대한 설명서를 이해하기 위해 노력했지만, 그것은에 침몰하지 않는 것 사람이 마지막 조각이 일을 정확히 이유를 나에게 설명 할 수 있지만, 처음 두하지 않았다. ?

답변

3

"% s"- 다음 공백 문자 ("\ n")는 모두 일치하지만 "\ n"은 일치하지 않습니다.

"O Samn 문자열과 일치하는 것 "\ n"

"% s \ n"- 다음 공백 ("\ n"여기)과 "\ n"을 모두 일치시킵니다. 파일에 후행 "\ n"이 없거나 "\ n"앞에 공백이있는 경우에는 다른 동작을합니다.

"공백까지 일치하는 항목이있는 경우 "\ n"을 포함하는 모든 후행 공백 (또는 공백이 없을 수도 있음). ""는 형식 문자열에 "모든 공백, 가능한 없음"을 의미하기 때문에 작동합니다.

관련 문제