[go-nuts] Re: can't open file if its name was read from stdin

2017-08-25 Thread Uli Kunitz
Good, that you found the problem yourself. I wasn't aware that you were on 
Windows were newlines are represented by CRLF ("\r\n"). TrimSpace would 
deal with that as well.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[go-nuts] Re: can't open file if its name was read from stdin

2017-08-25 Thread Geoff Fridd
I found the solution myself - when read in from stdin, there are 2 extra 
characters - CR and LF.  I just cut the string 2 characters before the end, 
and it works!  Thanks to those for posting replies!

On Thursday, August 24, 2017 at 11:35:31 PM UTC-4, Geoff Fridd wrote:
>
> Does anyone know why Google Go program 1 works, below, and program 2 
> doesn't? The only difference - I read in the filename from the console in 
> the one that doesn't work but it is a literal in the one that works... I 
> tried typing in the full path for the file, and also "..sample.txt" instead 
> of "sample.txt", but they didn't solve it either.
> // program 1 - this works:
>
> package main import (
> "fmt"
> "os"
> "bufio" )
> 
> func main() { 
> filename := getFilename()
> fmt.Println("opening:",filename) 
> //  fmt.Println("opening:sample.txt") 
> _ , err := os.Open("sample.txt") 
> //   _ , err := os.Open(filename) 
> if err != nil { 
> panic(err) 
> } 
> } 
>
> func getFilename()  string {
> reader := bufio.NewReader(os.Stdin)
> fmt.Print("Enter file name: ")// type in anything, this file 
> name not used
> filename, _ := reader.ReadString('\n')
> return filename
> }
>
>
> // program 2 - this doesn't work, gives error shown below:
>
> package main
> import (
> "fmt"
> "os"
> "bufio"
> )
> 
> func main() 
> filename := getFilename()
> fmt.Println("opening:",filename)
> // fmt.Println("opening: sample.txt")
> // _ , err := os.Open("sample.txt")
> _ , err := os.Open(filename)
> if err != nil {
> panic(err)
> }
> }
>
> func getFilename()  string {
> reader := bufio.NewReader(os.Stdin)
> fmt.Print("Enter file name: ")// type in "sample.txt" (without 
> the quotes)
> filename, _ := reader.ReadString('\n')
> return filename
> }
>
> Error message, panic invoked - 
> : The filename, directory name, or volume label syntax is incorrect.
>
> goroutine 1 [running]:
> main.main()
> C:/installed programs/go/src/testopen2.go:16 +0x158
> exit status 2
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[go-nuts] Re: can't open file if its name was read from stdin

2017-08-24 Thread Uli Kunitz
ReadString returns the line including the terminating newline ('\n'). You 
can check it with fmt.Printf("filename: %q\n", filename). One option to fix 
it is using function strings.TrimSpace. It will remove all space characters 
at the start and the end of the string. 

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.