C++ Beginner Problem With Optget


 
Thread Tools Search this Thread
Top Forums Programming C++ Beginner Problem With Optget
# 1  
Old 10-23-2010
C++ Beginner Problem With Optget

Hi. I am new to C++. But I am trying to write a basic program that uses the command line. But...
$ ./myscript -s 1 -e 8 -c billy -v 1 -o test

I get output like this...
Starting Length = 1 Ending Length = 8 Name = (null) Output File = (null) Verbose = 1

How come 'Name' and 'Output File' show (null)?

Code:
#include <iostream>
#include <cstring>

using namespace std;

int main(int argc, char *argv[])
{
	
	char *start_f;
	char *end_f;
	char *name_f;
	char *out_f;
	
	int verbose_f;
	int help_f;
	int arg;
	
	while((arg = getopt(argc, argv, "s:e:n:o:vh")) != -1)
		
		switch(arg) {
				
			case('s'):
				
				if(*optarg=='1'||*optarg=='2'||*optarg=='3'||*optarg=='4'||*optarg=='5'||*optarg=='6'||*optarg=='7'||*optarg=='8')
					start_f = optarg;
				
				else {
					cout << "ERROR!" << endl;
					return 0; }
				
				break;
				
			case('e'):
				
				if(*optarg=='1'||*optarg=='2'||*optarg=='3'||*optarg=='4'||*optarg=='5'||*optarg=='6'||*optarg=='7'||*optarg=='8')
					end_f = optarg;
				
				else {
					cout << "ERROR!" << endl;
					return 0; }
				
				break;
				
			case('n'):
				
				if(optarg=="billy")
					name_f = optarg;
							
				break;
				
			case('o'):
				
				out_f = optarg;
				
				break;
				
			case('v'):
				
				verbose_f = 1;
				
				break;
				
			case('h'):
				
				help_f = 1;
				cout << "ERROR!" << endl;
				return 0;
				
				break;
			
			default:
				cout << "ERROR!" << endl;
				return 0; }
	
	printf("\nStarting Length = %s    Ending Length = %s    Name = %s   Output File = %s    Verbose = %d\n\n",
		   start_f, end_f, name_f, out_f, verbose_f);
	
	return 0;
	
}

# 2  
Old 10-23-2010
Quote:
$ ./myscript -s 1 -e 8 -c billy -v 1 -o test
Are you sure you're entering "-c billy" and not "-n billy"?

Also, one of your lines:

Code:
if(optarg=="billy")

will result in undefined behaviour. Try changing it to "if (string(optarg)=="billy")" and see what happens.
This User Gave Thanks to JohnGraham For This Post:
# 3  
Old 10-24-2010
You're using printf. you need to include <stdio.h>

Your program is a hairs-breath from being pure C, which has a few advantages. Replace cout with printf, if(string_object == other_string) with if(strcmp(cstring, othercstring) == 0), get rid of the C++ iostream etc. includes and you'll be there, and be able to compile with gcc instead of g++ and enjoy the big improvement in compilation speed and decrease in executable size and runtime resource usage.
This User Gave Thanks to Corona688 For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Red Hat

Help me please i am beginner

i have windows 8 host on Dell Laptop vmware 9 redhat 7.2 iso downloaded through redhat official site after installation on vm it only boots into text dont show graphics Please guide:( (1 Reply)
Discussion started by: hananabbas
1 Replies

2. Shell Programming and Scripting

Beginner looking for help

Hello, I am trying to write a script that reads names from a file called input, removes names if they have the same letter next to each other and prints the others. e.g. Colin & John would be printed Garry & Lynn would be removed My thinking is that I read in each name and... (3 Replies)
Discussion started by: colinireland
3 Replies

3. UNIX for Dummies Questions & Answers

Beginner - What Should I Do First?

Hi people.... I have just started to learn unix.I want to know which version of Unix to install plus how to install it.I need to practise and make myself aware of how unix works.My thread is from an educational point of view.Also please feel free to give your suggestions as I am... (3 Replies)
Discussion started by: amit.kanade1983
3 Replies

4. Shell Programming and Scripting

Unknown problem-beginner

Hi, I have a problem running my script.Here it is: num1="1" num2="2" num3="3" num4="4" num5="5" num6="6" num7="7" echo echo "Type what you wanna do..." echo "1= Start interface 2= Stop interface 3= See your mac" echo "4= Change your mac 5= Hack WEP...... 6= Hack WPA...." echo... (3 Replies)
Discussion started by: hakermania
3 Replies

5. Shell Programming and Scripting

Beginner Help

I need to write a script to test a nsort c program. I have written 8 .txt files with different cases. Also 8 .txt files with expected outcome. The shell I have written always "test pass" for the first case but always "fail" for the rest... Here is a portion of my code (as I still don't know how to... (5 Replies)
Discussion started by: thibodeau
5 Replies

6. UNIX for Dummies Questions & Answers

Beginner Help

hi guys, i have a DEl xps laptop cor 2 duo 2.2 i have vista installed on it i want to install a dual Boot UNIX on it.. can some one guide me ...cause i m tottaly new to UNIX i want to install unix on that laptop along with Vista.... thx any help would be deeply appreciated (sorry if i... (5 Replies)
Discussion started by: Farhan082
5 Replies

7. Programming

Beginner C

Anyone know where I can get started in C++ programming in unix? Any good free tutorials or websites to start at? I am okay in unix scripting but have never done c programming of any sort... What are the main advantages of using C++ ? (2 Replies)
Discussion started by: frustrated1
2 Replies

8. Shell Programming and Scripting

Beginner export problem

Me dumb. Can't get this to work... #!/bin/sh export JAVA_HOME_BAK=${JAVA_HOME} or #!/bin/sh export JAVA_HOME_BAK=/usr/java or #!/bin/sh export JAVA_HOME_BAK=$JAVA_HOME or #!/bin/sh export JAVA_HOME_BAK $JAVA_HOME etc.... none work. Either i get: "JAVA_HOME_BAK=/usr/java: is not... (1 Reply)
Discussion started by: xplodersuv
1 Replies

9. Shell Programming and Scripting

Please help. I am a beginner.

Alrigt, I need to write a shell script where it counts the number of folders and files and dispays "My home directory has 'x' files and 'y' directories." So, I was thinking of doing this. set x = `ls | wc` so, if I have 8 files and folders in my home directory, x is not 8. now, I was... (1 Reply)
Discussion started by: Lykathea Aflame
1 Replies

10. Programming

A beginner's problem

Hi, I'm a beginner to study linux program, I know use gcc can link one *.c file to a exe file, but how to link different source files(*.c) to a exe at once. AnyBody know and tell me, thanks. (2 Replies)
Discussion started by: kira_freedom
2 Replies
Login or Register to Ask a Question