操作系统。公开投诉无效参数

我只是在编写一个基本程序来输入文件路径并打开文件,但操作系统。打开引发无效参数


    input_arr := make([]byte, 100)

    for {

        n, err := io.ReadAtLeast(os.Stdin, input_arr, 1)

        if err != nil && err != io.EOF {

            log.Fatal(err)

        }

        //fmt.Print(input_arr[:n])

        //fmt.Printf("%s", input_arr[:n])

        // \n -> 10

        if input_arr[n-1] == 10 {

            fmt.Println("\nEncountered \\n ")

            break

        }

    }


    file_name := string(input_arr)

    fmt.Printf("%T, %s", file_name, file_name)

    f, err := os.Open(file_name)

    fmt.Println(f, err)

代码输出


13:47:46:kumars@kumars-pc:/mnt/c/Users/kumars/git/golang/helloworld$

-> go run go_file.go 

Enter a file path to open: /tmp/hello.txt

Encountered \n 

string, /tmp/hello.txt

<nil> open /tmp/hello.txt

: invalid argument


慕仙森
浏览 80回答 1
1回答

慕慕森

创建 中的所有值时,都设置为其默认值(因为&nbsp;byte 是数值类型)。当您用输入中的一些值填充此数组时,其他字节将保持原样()。input_arr := make([]byte, 100)input_arr0input_arr0也<nil>&nbsp;open&nbsp;/tmp/hello.txt :&nbsp;invalid&nbsp;argument指示字符串中还留下了换行符,因为错误消息应如下所示:<nil>&nbsp;open&nbsp;/tmp/hello.txt:&nbsp;invalid&nbsp;argument您可以从 中复制填充的数据,一切都应该可以正常工作:input_arrvar&nbsp;data&nbsp;[]byte//&nbsp;...for&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;... &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;inputArr[n-1]&nbsp;==&nbsp;10&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fmt.Println("\nEncountered&nbsp;\\n&nbsp;") &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data&nbsp;=&nbsp;inputArr[:n-1]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break &nbsp;&nbsp;&nbsp;&nbsp;} } fileName&nbsp;:=&nbsp;string(data)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go