Hi friends,
I have this problem that I am facing, I want to store an argument which is passed to main, and I want to store it as an array of characters. I can store number arguments with the help of x = atoi(argv[1]). Now suppose I passed the argument
to main, how can I store it somewhere in my program? I can access that "hello" through
but how can I store it in another variable, so that I can carry different operations on it? What can kind of variable is able to hold the value of
And is it only the SPACE character which seperates different arguments passed to the main, or is there any other character other than space which can act as seperator?
Looking forward to your wonderful replies.
I think you had better dynamically allocate the memory to hold the string copy. A fixed length buffer is subject to buffer overflows. strdup(3) would do the work for you. Alternatively, you can use malloc and strcpy to do the same work.
And is it only the SPACE character which seperates different arguments passed to the main, or is there any other character other than space which can act as seperator?
The separator is one of the characters in the IFS variable, which can be modified to suit your needs
Note that you can still pass arguments with embedded separators by single or double quoting them.
@Corona688: I don't get your comment unless I'm really misunderstanding the initial question.
The open poster is referring to argv so IMHO clearly asking about how parameters are split before calling the main function, not inside it.
The shell is also the usual way to launch a program and probably also the one the open poster is thinking of when referring to arguments being separated by a space character.
---------- Post updated at 21:12 ---------- Previous update was at 20:14 ----------
@gabam: about your separator question, can you clarify how you are calling your main and especially passing arguments to it. i.e. from the shell or from withing another C program ? In the latter case, with what function ?
However the base requirement is not reasonable. As far as I can see. You already have strings in **argv.
If you need to call them something useful like one, two and three ( you make up meaningful names) use pointers. Duplicating them serves no logical purpose except to use memory. The only time you would care about duplicating them is when both of these are true:
1. you need to keep them for later use, unchanged
2. you plan to change them (The C standard says you can modify them, you cannot tack more characters onto the end of each one, though). If you are concatenating **argv strings onto one of the **argv strings, then create duplicates.
otherwise use pointers to those strings. simple example:
This User Gave Thanks to jim mcnamara For This Post:
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)
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)
Hello, I am quite new in shell scripting and I would like to write a little scritp to run a program on some parameters files.
all my parameters files are in the same directory, so pick them up with
ls *.para >>dirafter that I have a dir file like that:
param1.para
param2.para
etc...
I... (2 Replies)
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)
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)
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)
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)
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)
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)