Sponsored Content
Top Forums Programming Changing the way arguments are read from program Post 302599516 by Corona688 on Friday 17th of February 2012 10:50:27 AM
Old 02-17-2012
I've had a hard time helping you because haven't documented your code at all, you use all kinds of things you never declared anywhere, and use lots of functions which aren't standard STL. I have to guess at what the meaning of all of these is. I figured out your ToEnd function eventually, but many things remain mysterious. To that end, I'm forced to rewrite it instead of modifying it.

You can simplify this a lot, anyway. There's no reason to keep converting most of those things to String and back when all you do is convert them back to 'char *'. [] works just as well on char *'s as it does on strings too, and far faster.

You can avoid SkipFlag. Increment the loop right now if you need to skip something, and you won't need to remember later.

Most of your variables make much more sense to declare where you're using them, instead of in one big lump at the top of your function. It took me a while to realize that each code block uses separate, independent variables here, even though they all just use the value immediately...

You can avoid the close() by declaring ifs inside the code block, too. When you do that, it auto-closes whenever it goes out of scope. This will also let you get rid of the open(), because you can feed the file name straight into the constructor.

Code:
#include <string.h>

...

void Parsing::ParseCMD(int argc, char *argv[])
{
        List<int>  Ord; Ord += 0;
        int n;

        for(n=1; n<argc; n++)
        {
                if(argv[n][0] == '?') // "?abcd"[0] is '?'.
                {
                        ifstream ifs(argv[n]+1); // "?abcd"+1 is "abcd", so open filename "abcd".
                        if(!ifs.good()) error("Error including file");
                        else    ParseFile(ifs);
                } // end of code block.  ifs closes here.
                else if(strncmp(argv[n], "--", 2) == 0) // compare first 2 chars.  Will be 0 if they match.
                {
                        // strchr("--asdf=b", '=') is "=b".  If not found, it is NULL instead.
                        const char *After=strchr(argv[n], '='), *Name;
                        string Ends; // Make it a 'string' so we can use your ToUpper function

                        if(After == NULL)
                        {
                                n++; // Get the next argument
                                // If there is no next argument, quit instead of crashing!
                                if(n == argc)
                                {
                                        error("out of arguments");
                                        continue;
                                }

                                Name=argv[n];
                        }
                        else                    Name=After+1; // "=b"+1 is "b"

                        Ends=ToUpper(Name);

                        Index += ParseEl(Name, Ends, Ord);
                }
        }
}


Last edited by Corona688; 02-17-2012 at 12:00 PM..
This User Gave Thanks to Corona688 For This Post:
 

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

Arguments to a shell program

Hi List, Is it possible to pass one argument to a shell program eg) there is a shell program abc which takes one arguments abc one Due to some reasons I pass abc one two Now one,two must be considered as "one" argument to the shell programs. Any suggestions,hints are welcome. ... (3 Replies)
Discussion started by: csvenkata
3 Replies

2. Shell Programming and Scripting

two arguments with nawk program

Can someone help me to understand this part of code? /bin/nawk -f awkfile file1 file2 I know awkfile is the one with awk script. file1 is source file that needs to be processed. What is file2 two? Thanks for your help! (4 Replies)
Discussion started by: whatisthis
4 Replies

3. Linux

Where to set program arguments in DDD debugger?

In DDD debugger, where to set the the arguments for main program? For example: ./myExe "argv1" "argv2" -> where to set "argv1" & "argv2" ? Thanks! (2 Replies)
Discussion started by: princelinux
2 Replies

4. Shell Programming and Scripting

pass arguments to called program

Thank you very much. (2 Replies)
Discussion started by: ShellUser
2 Replies

5. Shell Programming and Scripting

How to give runtime arguments to different program

I have a shell script that is attempting to call a c program. I call the c program with ./dictool dictool accepts arguments at runtime. It works by prompting the user for various commands, acting on those commands, spitting out an output, and then prompting for more commands. My question is,... (1 Reply)
Discussion started by: aarongoldfein
1 Replies

6. Programming

Program java arguments

Hello, The arguments are strings. In my code I need them to be a different type, I do the cast but it is not feasible ... Have you any idea? Thank you (8 Replies)
Discussion started by: chercheur857
8 Replies

7. Programming

Writing C++ program Arguments and Classes

I want to write a C++ program that uses a class to do some calculations. I pass arguments to the program, some of which are used to set up class members. A class function will then perform the necessary calculations. I am wondering how I should pass the arguments from the program to set the... (2 Replies)
Discussion started by: kristinu
2 Replies

8. Shell Programming and Scripting

Interpreting arguments in Perl program.

Hello. I'm new to Perl and I am not sure how to interpret command line arguments in the program. I am writing a program similar to the Unix utility 'tail' and need to check if first argument is '-1' (1) or any arbitrary number of lines to output. How would I write an 'if' statement to check for... (4 Replies)
Discussion started by: D2K
4 Replies

9. Shell Programming and Scripting

Multiple arguments to read

I am developing a script where 3 other scripts are included. This is a graph related script. COMPLETE IDEA: -There are 3 different graph scripts. I would like to create a master graph with all 3 in one. -User chooses the type of graph -User is asked to enter the required auguments (... (7 Replies)
Discussion started by: newkid.7955
7 Replies

10. Shell Programming and Scripting

How to pass command line arguments to awk program?

#!/bin/awk -f BEGIN { FS=":"; } { if ( $7 == "" ) { print $1 ": no password!"; } } I want to execute this program for a particular user to check for his password from the file /etc/passwd (as the input file) and the user details to be given... (1 Reply)
Discussion started by: sri.phani
1 Replies
All times are GMT -4. The time now is 06:02 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy