hab problem mit simplen parser...

bjflame

Grünschnabel
hi

hab leider ein problem mit nem einfachen parser in c... :(
ich bin leider nicht so der tolle programmierer.
wär super, wenn mir jemand weiter helfen könnte... :)

ich bin bis jetzt so weit, dass aus einem string die einzelnen teile ausgelesen werden.
der string sieht so aus..

"befehl -argument1 wert1 -argument2 wert2"

können beliebig viele argumente inkl. werte sein...

hab da auch extra nen counter mit am laufen.

jetzt kommt der teil, bei dem ich nicht mehr zurecht komm...

nun soll dies in ein 2 dimensionales array gespeichert werden...
soll dann so ausschaun...

befehl //zeile 0 spalte 0
argument1 //zeile 1 spalte0
wert1 //zeile1 spalte1
argument2 //zeile2 spalte0
wert2 //zeile2 spalte1

usw...


kann mir da jemand weiter helfen?

des hab ich bis jetzt...

die ganzen printf sollen dann natürlich wegfallen und die werte einfach nur in das mehrdimensionale array geschrieben werden...

Code:
#include <stdio.h>
#include <ctype.h>

int main(void)
{


int e;
char text[128]="connect -user peter -p geheim -k auto -o opa";
char *ptr;
ptr = text;

char textbuffer[128];
char *ptrtb;
ptrtb = textbuffer;

int spaces = 0;
int paracount = 0;
int paraflag=0;


while(1)
{

	/*if(isalpha(*ptr)){
		printf("%c",*ptr);
	}*/

	if(*ptr==' ' || *ptr=='\0'){
        spaces++;
		*ptrtb = '\0';	
		if(spaces==1)printf("befehl: ");
	    printf("%s\n",textbuffer);
		
        strcpy(textbuffer,"");
		ptrtb = textbuffer;	
		if(paraflag==1){
			printf("wert %i: ",paracount);
			paraflag = 0;
		}	
	} else {

		if(*ptr=='-' || *ptr=='--'){
			paracount++;	
		printf("parameter %i:",paracount);	
			paraflag = 1;			
		}		

		*ptrtb = *ptr;	
		ptrtb++;	
        
    }
	
	if(*ptr=='\0') break;

	ptr++;
} 

scanf ("%i");
return 0;
}



mfg
bj
 
Zuletzt bearbeitet:
Zurück