ما هو الفرق بين هذه المكالمات الثلاثة FSCANF في Ocaml؟

StackOverflow https://stackoverflow.com/questions/1659172

  •  11-09-2019
  •  | 
  •  

سؤال

كتبت قليلا من الكود إلى مجرد تخطي num_lines خطوط في ملف الإدخال (طباعة الخطوط خارج لأغراض التصحيح. هنا شيئين حاولت ذلك لم ينجح:

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;;

لقد كنت أحاول فهم الوثائق بشأن FSCAMANF، لكن لا يبدو أنه غرق. هل يمكن لشخص ما أن يفسر لي بالضبط لماذا عملت آخر مقتلا، ولكن الاثنان الأولان

هل كانت مفيدة؟

المحلول

"٪ S" - يطابق كل شيء للمساحة البيضاء التالية (" n" هنا) ولكن لا تتطابق أبدا " n"

"٪ S N" - يطابق الشيء الذي يشبه سلاسل OCAML، ثم " n"

"٪ s n" - يطابق كل شيء للمساحة البيضاء التالية (" n" هنا) ثم " n". سيتصرف هذا مختلفا إذا لم يكن هناك " n" في ملف أو إذا كان هناك مساحة قبل " n"، إلخ.

"٪ S" - يطابق أي شيء حتى المساحة البيضاء، ثم جميع المساحات البيضاء الزائدة بما في ذلك " n" (أو ربما حتى مساحة بيضاء). يعمل هذا لأن "" يعني "أي مساحة بيضاء، لا شيء ممكن"، في سلسلة التنسيق.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top