Command line args


 
Thread Tools Search this Thread
Top Forums Programming Command line args
# 1  
Old 05-28-2007
Command line args

My program usage takes the form for example;
$ theApp 2 "one or more words"

i.e. 3 command line arguments; application name, an integer, some text

My code includes the following 4 lines:

int anInteger;
char words[80];

sscanf(argv[1], "%d", &anInteger);
sscanf(argv[2], "%s", &message);


Based on th example execution shown above this code results in th following assignments:

anInterger = 2 /* correct and as I thought*/
message = one /* not as I thought or intended*/

I thought when I printed out the value of message I would get:
one or more words

but instead I get:
one

I have done a test and the use of the " " marks seems to make "one or more words" be seen as a single argument. If I don't use the " " marks it sees every word as another argument.

So even though the program sees "one or more words" as a single argument, sscanf is not reading it properly. How can I overcome this problem?
# 2  
Old 05-28-2007
That is how the scanf family of functions works. Try another test:
Code:
#include<stdio.h>

int main(int argc, char *argv[]){
        char message[80];

        fscanf(stdin,"%s",message);
        fprintf(stdout,"%s\n",message);
}

If you run this, this is what you get:
Code:
# ./a.out
this is a test
this

This is how it is implemented. Anyway, if you want to copy the second argument (argv[2]) into the message string, just use strcpy, like this:
Code:
#include<stdio.h>
#include<string.h>

int main(int argc, char *argv[]){
        int anInteger;
        char message[80];

        sscanf(argv[1], "%d", &anInteger);
        strcpy(message,argv[2]);
        fprintf(stdout,"anInteger: %d\nmessage: %s\n",anInteger,message);
}

This works as you want it to:
Code:
# ./a.out 2 "this is a test"
anInteger: 2
message: this is a test

# 3  
Old 05-29-2007
Thanks very much, problem solved.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Getopts how to handle missing '-' in command line args.

I'm using getopts to process command line args in a Bash script. The code looks like this: while getopts ":cfmvhs:t:" option; do case $option in c) operationMode="CHECK" ;; f) operationMode="FAST" ;; m) ... (6 Replies)
Discussion started by: gencon
6 Replies

2. Shell Programming and Scripting

Passing Command Line Args in a Single Variable?

Hello All, I have a Bash Script and an Expect script that together will SSH to another server and do some stuff there... From within the Bash Script I process the Command Line Arguments, which are Required Args and Optional Args. When I call the Expect script from the Bash Script, I pass... (4 Replies)
Discussion started by: mrm5102
4 Replies

3. Emergency UNIX and Linux Support

Cut | command line args

Hi, Can you please hint me how to achieve the below? Input: $./script.sh start 1 2 Internally inside the script i want to set a single variable with $2 and $3 value? Output: CMD=$1 ARGS=$2 $3 --VInodh (10 Replies)
Discussion started by: vino_hymi
10 Replies

4. Shell Programming and Scripting

command line args in unix

Hi, i have a perl script named test.pl. It is executed as cat *.log|test.pl i need the complete command line args. I tried using basename $0 but im getting test.pl only but not cat *.log... Can anyone help me on this. Thanks in advance (3 Replies)
Discussion started by: niteesh_!7
3 Replies

5. Shell Programming and Scripting

problem with KSH script: command line args

Hi I am executing a KSH script by passing command line arguments example: Red Green Dark Red Blue when I am splitting the arguments by using " "(Space) as delimiter But the colour Dark Red is a single parameter. But it is getting splitted in between How to avoid this. Please help Also... (4 Replies)
Discussion started by: hemanth424
4 Replies

6. Shell Programming and Scripting

How to send a function all command line args?

I have this code, I thought it would automatically know the args sent to script when called from shell. But it seems to not see any... main script: . args . errors . opt . clean dbfile="" opfile="" # calls function in script below chkarg #check commands (2 Replies)
Discussion started by: gcampton
2 Replies

7. Shell Programming and Scripting

How to retrieve command line args one by on.

Hi, I have to store all the command line arguments into an array. I have the following code. ********************** #! /bin/sh set -A arr_no_updates i=1 while do arr_no_updates=$($i) echo ${arr_no_updates} i=$(($i+1)) done**************** (1 Reply)
Discussion started by: little_wonder
1 Replies

8. UNIX for Dummies Questions & Answers

command line args 2

I have this while loop and at the end I am trying to get it to tell me the last argument I entered. And with it like this all I get is the sentence with no value for $1. Now I tried moving done after the sentence and it printed the value of $1 after every number. I don't want that I just want... (2 Replies)
Discussion started by: skooly5
2 Replies

9. UNIX for Dummies Questions & Answers

command line args

I am trying to print command line arguments one per second. I have this while do echo "6" shift echo "5" shift echo "4" shift echo "3" shift echo "2" shift echo "1" shift done (2 Replies)
Discussion started by: skooly5
2 Replies

10. UNIX for Dummies Questions & Answers

required command line args

Hello, How do I make a command line argument required using getopts? Thanks. (6 Replies)
Discussion started by: yoi2hot4ya
6 Replies
Login or Register to Ask a Question