@@ -2,13 +2,32 @@ package main
22
33import (
44 "bufio"
5+ "fmt"
56 "io"
67 "os"
78)
89
910func main () {
10- reader := bufio .NewReader (os .Stdin )
11- writer := bufio .NewWriter (os .Stdout )
11+ // 引数チェック(ファイルパスが貼り付けられてくる想定)
12+ if len (os .Args ) < 2 {
13+ fmt .Println ("使用法: go run main.go <ファイルパス>" )
14+ return
15+ }
16+ filePath := os .Args [1 ]
17+
18+ file , err := os .Open (filePath )
19+ if err != nil {
20+ fmt .Fprintf (os .Stderr , "エラー: %v\n " , err )
21+ os .Exit (1 )
22+ }
23+ defer file .Close ()
24+
25+ process (file , os .Stdout )
26+ }
27+
28+ func process (r io.Reader , w io.Writer ) {
29+ reader := bufio .NewReader (r )
30+ writer := bufio .NewWriter (w )
1231 defer writer .Flush ()
1332
1433 inString := false
@@ -26,7 +45,7 @@ func main() {
2645
2746 if ! inString && r == '/' {
2847 next , _ , _ := reader .ReadRune ()
29- if next == '/' { // 1行コメント //
48+ if next == '/' { // 1行コメント
3049 for {
3150 n , _ , _ := reader .ReadRune ()
3251 if n == '\n' || n == 0 {
@@ -35,7 +54,7 @@ func main() {
3554 }
3655 }
3756 continue
38- } else if next == '*' { // 複数行コメント /* */
57+ } else if next == '*' { // 複数行コメント
3958 for {
4059 n , _ , _ := reader .ReadRune ()
4160 if n == '*' {
@@ -49,7 +68,7 @@ func main() {
4968 continue
5069 } else {
5170 writer .WriteRune (r )
52- reader .UnreadRune ()
71+ _ = reader .UnreadRune ()
5372 continue
5473 }
5574 }
0 commit comments