getline to read input from a user


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers getline to read input from a user
# 1  
Old 09-22-2008
getline to read input from a user

Hi,
The gcc compiler has warned about using gets(), so I've been trying my hand at getline.
Problem is that I've been able to read from a file, but what I really need is to read from a user's input.
I want to use getline like a scanf() command, but I can't figure what to substitute for the fp variable so that it'll be able to read an input from the user.

Code:
FILE *fp;
char *line=NULL;
size_t len=0;
//...blah blah...
ssize_t read=getline(&line, &len, fp);

# 2  
Old 09-22-2008
getline is C++ code, this looks like C. The C call that is like getline is fgets.
Another more general point - read is a system API call, so you should reconsider it's use as a variable name.

What you want is stdin, that is the name of the standard input device stream in C if you use fgets. fgets(char *buf, size_tn, streams *stdin).

cin.getline(char *, streamsize n) is the way do the same thing in C++.

len should be a number larger than zero, typically the number of bytes of storage in your line variable. char *line should have memory allocated to it.

This advice is not going to help until you go either in a C direction or a C++ direction.
# 3  
Old 09-22-2008
Thanks Jim...I'm using C on Unix.
Is fgets() a good option? Coz we have to specify the size of the characters, right? What if the user types an extremely long line?
I've been considering scanf, and apparently it can be used like scanf("%[^/n]",abc); (what's surprising is that abc doesn't need an ampersand preceeding it)
Got it from here
and there are comments about scanf being vulnerable to buffer overflows. Is that true?

So basically, for a user who likes typing long lines, would scanf, fgets or getline be a better option?

In the meantime I'll be trying stdin in place of fp, for getline...
# 4  
Old 09-22-2008
There's a teensy problem with using the scanf("%[^/n]...);
What happens is that if I take a line input and create a child process, the child process doesn't even pause at the scanf line. It just proceeds on to create another child process, which does the same thing and keeps going on. Unnerving!!!
# 5  
Old 09-23-2008
I would use scanf() out of habit. If you specify the maximum size of the expected string, e.g. char mystring[21]; scanf("%20c",mystring);, then it should be protected from buffer overflows (note the extra char I allowed for the terminating null).

However if the GNU readline library is available to you you may prefer that; it gives the user full command-line editing facilities at the entry field.

I don't understand what you're trying to achieve with the %[^/n]?

abc does not need an & because a string, or array of chars, is just a pointer anyway. You could use &abc[0] if you wished, which just means "the address of the first item in the abc array", but the result is the same.
# 6  
Old 09-24-2008
Thanks...scanf seems to have some problems though...on creating a child, if scanf had taken in a line, the child ignores scanf.
# 7  
Old 09-24-2008
I guess that depends on how you are creating a child and whether or not it has access to the stdin/stdout of the parent process. Without seeing your code it's hard to guess what's wrong there.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Unable to read user input inside a loop

Hi, This query is a part of a much more lengthy script. I wish to look for all the files in a folder named "data" which in this case has two files i.e. plan.war and agent.properties. For all the files found under data I wish to ask the user as to where they wish copy the files to. Below,... (14 Replies)
Discussion started by: mohtashims
14 Replies

2. Shell Programming and Scripting

Shell read command is not waiting for user input

Hi, i am working on one automation , for that i have writing one shell program that take user input in "while read line" block. but read command is taking value that is readed by While block. while read line; do command 1; command 2 echo -n "Do you want to continute > " read rsp... (2 Replies)
Discussion started by: ranvijaidba
2 Replies

3. Shell Programming and Scripting

Perl to read user input

I am creating a bash that uses perl . The below code closes before the input is entered. If I run the perl as a .pl it is fine. What am I doing wrong? Thank you :). #!/bin/bash cd 'C:\Users\cmccabe\Desktop\wget' wget -O getCSV.txt http://xxx.xx.xxx.xxx/data/getCSV.csv print... (4 Replies)
Discussion started by: cmccabe
4 Replies

4. Shell Programming and Scripting

BASH - read does not wait for user input in some circumstances

Hello. I am running 2 scripts : script_1 and script_2 These scripts are run as root Script 2 contains : #!/bin/bash # # ~/bin/script_2 # E_BAD_PARAM=115 # date2stamp () { date --date "$1" +%Y-%m-%d___%H:%M:%S } # USER_NAME=$1 NB_PARAM=$# PARAM0=$0 (2 Replies)
Discussion started by: jcdole
2 Replies

5. Shell Programming and Scripting

Using read to prompt for editable user input in Bash 3

Below is a simple script to prompt for user input while suggesting an editable default value at the prompt: shortname=user1 read -e -i $shortname -p "Please enter the username you would like to add: " input USERNAME="${input:-$shortname}" Please enter the username you would like to add:... (3 Replies)
Discussion started by: woodson2
3 Replies

6. Homework & Coursework Questions

How to read user keyboard input inside the case?

I need to Write a shell script that allows some system-administration tasks to be preformed automatically from a menu-driven interface. with automated following tasks: Copy directory tree Delete files or directories Output Information (this part is done ) *Copy directory tree The “Copy... (2 Replies)
Discussion started by: femchi
2 Replies

7. Shell Programming and Scripting

Help with Bash piped while-read and a read user input at the same time

Hi I am new to writing script and want to use a Bash Piped while-read and read from user input. if something happens on server.log then do while loop or if something happend on user input then do while loop. Pseudocode something like: tail -n 3 -f server.log | while read serverline || read... (8 Replies)
Discussion started by: MyMorris
8 Replies

8. Shell Programming and Scripting

Solaris- Read command from user input

I need to write a bourne shell script (solaris 10) that accepts input from the user. The input will be a command- any command like ls/ pwd/ mv etc. After the input is read, the shell must execute the command supplied by the user. I know we use read to play with user inputs. Just not sure how to... (2 Replies)
Discussion started by: PDManc
2 Replies

9. UNIX for Dummies Questions & Answers

How to read a line of text from user input?

Hiii I wanna a read a line of text from standard input. The user enter data like this way name phone_no month1_salary month2_salary that is user enter the name ,phone no and salary of 2 months in a single line by giving spaces. I wanna add the 3rd and 4th fields ...ie add both... (4 Replies)
Discussion started by: krishnampkkm
4 Replies

10. UNIX for Dummies Questions & Answers

read user input from within a wile loop that is being fed from below

hi! i need to do a ksh script that uses a wile loop that is fed form below while read line do some things done < myfile inside the while loop i need to read user input to ask the user what he wants to do, but "read" reads the file, and not the standard input while read line do ... (2 Replies)
Discussion started by: broli
2 Replies
Login or Register to Ask a Question