Hi,
ich möchte meine Quellcode vor DAU's absichern, unzwar dürfen die Argumente beim Start des Programmes (Kommandozeilenparameter)
keine Strings bzw. Chars enthalten, also nur numerische Werte dürfen mitgegeben werden.
Am Ende des folgenden Quellcodes ist ein Versuch von mir, welcher leider nicht das gewünscht Ergebnis liefert.
Hat jemand einen Tipp oder Lösungsvorschlag? Ich stelle mir vor, dass ich die übergeben Parameter durchlaufen und auf Chars überprüfe, aber wie ?
Code:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <limits.h>
#define ANZ_ZUF 6
#define MAX_WUERFEL 1000
#define MAX_AUGENZAHL 1000
void zufall_init();
int checkargus(char *argv[]);
int zufallszahl(int max);
int main(int argc, char *argv[]){
int i, err, err2,maxw, zaehler;
zufall_init();
/* for(i=0;i< 10;i++)
{
printf("aRG. %i: %s\n",i,argv[i]);
isNumber(argv[i]);
}*/
if(argc == 3)
{
err= checkargus(&argv[0]);
if(err==0)
{
maxw = atoi(argv[2]);
zaehler= atoi(argv[1]);
//err= checkargus(&argv[2]);
printf("Das Programm lautet: %s\n",argv[0]);
for(i=0; i<zaehler ;i++)
printf("Die %i. Zahl ist: %i\n", i+1, zufallszahl(maxw));
}else if(err==1)
printf("Fehlerhafte Parameter!\n");
}else
{
printf("Fehlerhafte Parameter!\n");
}
}
void zufall_init(){
time_t t;
time(&t);
srand((unsigned int) t);
}
int zufallszahl(int max){
return rand() % max;
}
int checkargus(char *argv[])
{
int argument1;
int argument2;
argument1 = atoi(argv[1]);
// argument2 = atoi((*(argv + 2)));
argument2 = atoi(argv[2]);
int i,x,y;
if((argument1 <= MAX_WUERFEL) && (argument1 > 0)){
if((argument2 < MAX_AUGENZAHL ) && (argument2 > 0))
return 0;
}
else
return 1;
}
/*{
for(i=0; i<=x ;i++)
{
if((x > 0) && (x <=9))
return 1;
if((y > 0) && (y <=9))
return 1;
else
return 0;
}
return 0;
}*/