回答編集履歴

3

記述の誤りの修正

2024/12/29 04:20

投稿

little_street
little_street

スコア435

test CHANGED
@@ -33,7 +33,7 @@
33
33
  ```
34
34
  (追記)
35
35
 
36
- 「自己解決」で提示されたコードとコメントを参考に更新してみました。 UTF-16LE(リトルエンディアン)のファイルから(BOM の有無にかかわらず)読み込めているようです。
36
+ 「自己解決」で提示されたコードとコメントを参考に更新してみました。 UTF-16(リトルエンディアン)のファイルから(BOM の有無にかかわらず)読み込めているようです。
37
37
 
38
38
  なお,読み込むファイル名を引数として与えられるように変更しています。
39
39
 

2

書式改善

2024/12/29 01:42

投稿

little_street
little_street

スコア435

test CHANGED
@@ -58,7 +58,7 @@
58
58
 
59
59
  if (fopen_s(&file, fname, "r, ccs=UTF-16LE") != 0) {
60
60
  printf("%s cannot be open!\n", fname);
61
- exit(1);
61
+ exit(2);
62
62
  }
63
63
 
64
64
  while (fgetws(line, N, file) != NULL) {

1

「自己解決」を基に更新

2024/12/29 01:40

投稿

little_street
little_street

スコア435

test CHANGED
@@ -31,4 +31,42 @@
31
31
  }
32
32
 
33
33
  ```
34
+ (追記)
34
35
 
36
+ 「自己解決」で提示されたコードとコメントを参考に更新してみました。 UTF-16LE(リトルエンディアン)のファイルから(BOM の有無にかかわらず)読み込めているようです。
37
+
38
+ なお,読み込むファイル名を引数として与えられるように変更しています。
39
+
40
+ ```C
41
+ #include <stdio.h>
42
+ #include <stdlib.h>
43
+ #include <wchar.h>
44
+
45
+ #define N 100
46
+
47
+ int main(int argc, char *argv[])
48
+ {
49
+ FILE *file;
50
+ char *fname;
51
+ wchar_t line[N];
52
+ int num;
53
+
54
+ if (argc != 2 || (fname = argv[1]) == NULL) {
55
+ fprintf(stderr, "usage: %s file_name\n", argv[0]);
56
+ exit(1);
57
+ }
58
+
59
+ if (fopen_s(&file, fname, "r, ccs=UTF-16LE") != 0) {
60
+ printf("%s cannot be open!\n", fname);
61
+ exit(1);
62
+ }
63
+
64
+ while (fgetws(line, N, file) != NULL) {
65
+ swscanf_s(line, L"%d", &num);
66
+ printf("%d\n", num);
67
+ }
68
+
69
+ exit(0);
70
+ }
71
+ ```
72
+