Sponsored Content
Top Forums Programming How do I copy or rewind *argv[] Post 302543305 by agama on Saturday 30th of July 2011 10:07:54 PM
Old 07-30-2011
Here's a small programme that will search through all command line parameters and print each out. It will also scan each parameter and print whether or not it contains all digits (leading whitespace is discarded such that " 123" is considered all digits. It should illustrate how to know when to stop processing command line arguments.

Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/* return true if string contains all digits
   skips leading whitespace if skip_lws is !0
*/
int all_digits( const char *buf, int skip_lws  )
{
    const char  *sp;            /* pointer into buffer */
    int     all_dig = 1;    /* state of string */

    sp = buf;
    if( skip_lws )      /* skip leading whitespace when asked*/
        for( ; *sp && isspace( *sp ); sp++ );

    if( ! *sp )
        return 0;       /* empty string -- return false (no digits) */

    for( ; *sp; sp++ )      /* for each character until \0 */
        if( ! isdigit( *sp ) )  /* return false on first non-digit found */
            return 0;

    return 1;       /* if we finish the loop, we saw all digits */
}

int main (int argc, const char **argv)
{
    int i;

    fprintf( stderr, "there are %d arguments on the command line\n", argc-1 );

    for( i = 1; i < argc; i++ )         /* for each argument */
    {
        fprintf( stderr, "parameter %d = %s\n", i, argv[i] );
        if( all_digits( argv[i], 1 ) )
            fprintf( stderr, "\targument is all digits\n" );
        else
            fprintf( stderr, "\targument is NOT all digits\n" );
    }

    return 0;
}

Arguments from the command line are zero terminated. From the example above the statement for( ; *sp; sp++ ) will stop when the character pointed to by sp is zero. It is the same as using:
Code:
for( ; *sp != 0; sp++ )

So, to answer your question about what *argv[1]+4 will equal when argv[1] is "eric" -- it should be zero.

Quote:
Also what should i equal,
in the code below.
Code:
argd[i-1]

I'm not sure what you are asking here.
 

10 More Discussions You Might Find Interesting

1. Programming

argv

I have a program which I wish to modify. It used to be run from the command line, but now I wish to change this so it can be used as a function. The program has complex argument processing so I want to pass my paramters to as if it were being called by the OS as a program. I have tried to... (2 Replies)
Discussion started by: mbb
2 Replies

2. UNIX for Dummies Questions & Answers

What is the function of rewind()?

What is the function of rewind()? (2 Replies)
Discussion started by: tigerkin
2 Replies

3. Programming

help for argv argc

Hi C experts, I have the following code for adding command line option for a program int main (argc, argv) int argc; char *argv; { char *mem_type; //memory type char *name; //name of the memory int addr; //address bits int data; ... (5 Replies)
Discussion started by: return_user
5 Replies

4. Programming

Problem with fgets and rewind function ..

Hello Friends, I got stuck with fgets () & rewind() function .. Please need help.. Actually I am doing a like, The function should read lines from a txt file until the function is called.. If the data from the txt file ends then it goes to the top and then again when the function is called... (1 Reply)
Discussion started by: user_prady
1 Replies

5. Shell Programming and Scripting

if #argv = (this OR that) then...

this is in one of my scripts... if ($#argv == 0) then echo 'blah bla' exit 0 endif I want it to be something like this... if ($#argv == 0 OR $argv >=3) echo 'blah bla' exit 0 endif so when the arguments are none, or greater than three I want this "if then" to take over. how? I... (5 Replies)
Discussion started by: ajp7701
5 Replies

6. UNIX for Dummies Questions & Answers

Need help to understand cpio and no rewind tapes

SCO openserver 5r5 I only have this available to me ... To list the files... cpio -itcvB < /dev/nrct0 To copy a file out cpio -icvdBum filename < /dev/nrct0So cpio is to archive or "zip" files up?? and /dev/nrct0 is the tape drive ??? How can i list all the files inside... (2 Replies)
Discussion started by: khaos83_2000
2 Replies

7. Programming

ARGV help in C

Hi, Can somehelp help how to list file in a dir? (5 Replies)
Discussion started by: Learnerabc
5 Replies

8. Programming

help with C, argv

when i run my program, i have a parameter, that i want to set the value to another string i am using int main(int argc, char **argv) { char my_str=argv; printf("%s",my_str); return 0; } and i get Segmentation fault ran using ./my_prog /usr/share/dict/words hello1 ... (2 Replies)
Discussion started by: omega666
2 Replies

9. UNIX for Advanced & Expert Users

O argv, argv, wherefore art thou argv?

All of my machines (various open source derivatives on x86 and amd64) store argv above the stack (at a higher memory address). I am curious to learn if any systems store argv below the stack (at a lower memory address). I am particularly interested in proprietary Unices, such as Solaris, HP-UX,... (9 Replies)
Discussion started by: alister
9 Replies

10. UNIX for Dummies Questions & Answers

ARGV how to use it?

So i am trying to read in file readFile <GivenFile> modFile looking for a regular file under the directories in the GivenFile and print them out is my over all goal. basically I am looking for anything that looks like a directory in the given file and printing it out. Since I am trying to do... (2 Replies)
Discussion started by: squidGreen
2 Replies
audgen(2)							System Calls Manual							 audgen(2)

Name
       audgen - generate an audit record

Syntax
       audgen(event, tokenp, argv)
       int event;
       char *tokenp, *argv[];

Description
       The system call generates an audit record, which gets placed in the auditlog.

       The  argument  event  is  an  integer  indicating the event type of the operation being audited (see ).	The value of event must be between
       MIN_TRUSTED_EVENT and MIN_TRUSTED_EVENT+N_TRUSTED_EVENTS.

       The argument tokenp is a null-terminated array of token types (see ), each of which represents the type of argument referenced by the  cor-
       responding *argv argument.

       The  argument  argv  is a pointer to an array containing the actual arguments or pointers to those arguments that are to be recorded in the
       audit record.  A pointer to the actual argument is placed in that array when the argument is a string,  array,  or  other  variable  length
       structure.   Arguments  represented  as int's or short's are placed directly in that array.  Each member of the array must be word-aligned.
       You cannot change the values for the audit_id, uid, ruid, pid, ppid, device, IP address, or hostid (secondary tokens for these  values  are
       available).

Return Values
       Upon  successful completion, returns a value of 0.  Otherwise, it returns a value of -1 and sets the global integer variable errno to indi-
       cate the error.

Restrictions
       The call is a privileged system call.  No record is generated if the specified event is not being audited for  the  current  process.   The
       maximum number of arguments referenced by argv is AUD_NPARAM (8).

Diagnostics
       The system call fails under the following conditions:

       [EACCES]       The user is not privileged for this operation.

       [EINVAL]       The value supplied for the event, tokenp, or argv argument is invalid.

																	 audgen(2)
All times are GMT -4. The time now is 11:46 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy