ARGV help in C


 
Thread Tools Search this Thread
Top Forums Programming ARGV help in C
# 1  
Old 05-09-2010
ARGV help in C

Hi,
Can somehelp help how to list file in a dir?
# 2  
Old 05-09-2010
Here is a minimalist example:
Code:
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>

int
main(int argc, char *argv[])
{
   struct dirent *ent;
   DIR *dir;

   if (argc == 2) {
       if ((dir = opendir(argv[1]))) {
           while((ent = readdir(dir)) != NULL)
               puts(ent->d_name);
       } else
           fprintf(stderr, "Error opening directory %s\n", argv[1]);
   }

   return 0;
}

# 3  
Old 05-09-2010
Quote:
Originally Posted by fpmurphy
Here is a minimalist example:
Code:
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>

int
main(int argc, char *argv[])
{
   struct dirent *ent;
   DIR *dir;

   if (argc == 2) {
       if ((dir = opendir(argv[1]))) {
           while((ent = readdir(dir)) != NULL)
               puts(ent->d_name);
       } else
           fprintf(stderr, "Error opening directory %s\n", argv[1]);
   }

   return 0;
}

Thanks Sir,
If you dont mind, can you please explain how this code is working?
# 4  
Old 05-09-2010
Quote:
Originally Posted by Learnerabc
Thanks Sir,
If you dont mind, can you please explain how this code is working?
Have a read of the Man Page for readdir (All Section 3posix) - The UNIX and Linux Forums

Regards
# 5  
Old 05-10-2010
Quote:
Originally Posted by Learnerabc
Thanks Sir,
If you dont mind, can you please explain how this code is working?
argv is an array of strings, argc is a count of them. argv[0] is, by tradition, the name of the program being called. argv[1] would be the first argument, if any. So a program called with no arguments would have argc=1 and argv[0] as the name of the program, with one argument would have argc=2 and argv[0] as the program name and argv[1] as the first argument, etc.
# 6  
Old 05-11-2010
I think the confusion lies in shell globbing - turning the * character into a list of files that are then picked up in the **argv array.

experiment with:
Code:
#!/bin/ksh

set +f
ls *
set -f
ls *

-f turns off globbing; +f turns on globbing.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. 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

2. 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

3. Programming

How do I copy or rewind *argv[]

I'm working on my own pow function and I need to make a copy of *argv but I think that I am having trouble with the size of *argv and the size of any array that I make. The code below isn't working for me. and I want to accept any number no matter the size with pow -f 2 2. I was working out... (16 Replies)
Discussion started by: Errigour
16 Replies

4. 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

5. Shell Programming and Scripting

$#Argv in Csh

Hello all, Had a quick question: In a typical csh script should inputting via stdin (i.e. set i = $< ) increase the value of $#argv ? echo enter an value: set val= "$<" if($#argv == 0) then echo No args else echo The arg is $argv so if a value is inputted #argv... (1 Reply)
Discussion started by: new2C
1 Replies

6. 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

7. 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

8. Shell Programming and Scripting

Perl: Getting $ARGV's to operate like while(<>)

I have a script that asks a bunch of questions using the following method for input: print "Name:"; while(<>){ chomp; $name=$_; } So for example, if the questions asked for name, age, & color (in that order)... I want to be able to easily convert $ARGV into the input expected by... (2 Replies)
Discussion started by: jjinno
2 Replies

9. Programming

Using argv argc

I searched on the forums. No advises. I am using a previous source code. I changed the main function main(int argc, char **argv) in a function misc(int argc, char **argv). How do you use the argc and argv parameters? This is how I am calling the function : char param; strcat(param,"wgrib ");... (4 Replies)
Discussion started by: Akeson Chihiro
4 Replies

10. 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
Login or Register to Ask a Question