【发布时间】:2016-08-09 02:56:36
【问题描述】:
我想从文件中读取一行,从该行初始化一个数组,然后显示整数。
为什么不读取行中的五个整数?我要输出1 2 3 4 5,我有1 1 1 1 1
open Array;;
open Scanf;;
let print_ints file_name =
let file = open_in file_name in
let s = input_line(file) in
let n = ref 5 in
let arr = Array.init !n (fun i -> if i < !n then sscanf s "%d" (fun a -> a) else 0) in
let i = ref 0 in
while !i < !n do
print_int (Array.get arr !i);
print_string " ";
i := !i + 1;
done;;
print_ints "string_ints.txt";;
我的文件是:1 2 3 4 5
【问题讨论】:
-
为什么不读取行中的五个整数?我想得到输出 1 2 3 4 5,我有 11111
-
就是这部分
sscanf s "%d" (fun a -> a):你总是从一开始就扫描同一个字符串s。sscanf不会改变你的字符串。 -
我能做些什么来从字符串中获取所有整数?有 int_of_string 但会尝试将整个字符串转换为数字。还有 get 但这只会给我 char 而不是整数。