[Hilfe]CGI-Parser

04/13/2013 15:01 Preakz#1
Hallo Liebe Community...
ich habe leider ein Problem und zwar haben wir ein CGI-Projekt von unserem Lehrer auf's Auge gedrückt bekommen. Ich habe den CGI-Parser soweit aber sobald er mehr als 5 Keywords übergeben kriegt zählt er nurnoch die Länge hoch und ich verstehe absolut nicht warum.
PS: Ja ich weiß man könnte den Parser auch mit Maps besser realisieren jedoch dürfen wir nur Stoff den wir im Unterricht durchgenommen haben verwenden... :/

Hier mal die Funktion (HTML[] ist der POST der eingelesen wurde ( KEYWORD=DATA&KEYWORD=...&...), HTMLData die Struktur indem ich das getrennte speichere und verwalte ):

Code:
//HTMLString Splitten
void MakeUseable( char HTML[] , THTMLData *HTMLData)
{
	/****************************************
	 *				Parser					*
	 ****************************************/
	//Variablen
	int HTML_size			= StrLaenge(HTML);
	int Keywords			= 0;
	int Charcount			= 0;
	int MAX_Kw_Lengh		= 0;
	int MAX_kw_Data_Lengh	= 0;
	
	//Temp Vars
	char	TempChar		= ' ';
	int		TempKLengh		= 0;
	int		TempKDLengh		= 0;
	bool	Fall			= false;


	//Zeichen zählen
	for(int i=0; HTML[i] != '\0'; i++)
		Charcount++;

	//Leerzeichen setzen
	for(int i=0; HTML[i] == '\0'; i++)
		if( HTML[i] =='+' )
			HTML[i] = ' ';

	// Fall 0=Keyword 1=KeywordData
	for(int i=0; HTML[i] != '\0'; i++)
	{
		if( Fall == false )
		{
			//MAX_Keyword-Länge zählen
			TempKLengh++;
			if( HTML[i] == '=' )
			{
				Keywords++;
				if( TempKLengh > MAX_Kw_Lengh )
				{
					MAX_Kw_Lengh = TempKLengh-1;
					TempKLengh = 0;
					Fall = true;
				}
			}
		}
		if( Fall == true )
		{
			//MAX_Keyword-Data-Länge zählen
			TempKDLengh++;
			//cout << TempKDLengh<<endl;
			if( HTML[i] == '&' || HTML[i+1] == '\0' )
			{
				if( TempKDLengh > MAX_kw_Data_Lengh )
				{
					MAX_kw_Data_Lengh = TempKDLengh-1;
					TempKDLengh = 0;
					Fall = false;
				}
			}
		}
	}

	cout << "Keywordlänge = " << MAX_Kw_Lengh << endl;
	cout << "KeywordData_l= " << MAX_kw_Data_Lengh << endl;
	cout << "Anz_Keywords = " << Keywords << endl;
	system("pause");

	HTMLData->num_of_Keywords		= Keywords;
	HTMLData->num_of_Keywordlengh	= MAX_Kw_Lengh;
	HTMLData->num_of_Datalengh		= MAX_kw_Data_Lengh;

	if(Keywords > 0 && MAX_kw_Data_Lengh > 1)
	{
		//Dynamischen Speicher anlegen...
		HTMLData->Keywords = new char*[Keywords];

		//Keywords
		for(int b=0; b<Keywords; b++)
		{
			//cout << b;
				HTMLData->Keywords[b] = new char[MAX_Kw_Lengh+1];
				//cout << "laenge=" << a << endl;
		}

		HTMLData->Data = new char*[Keywords+1];

		//Data
		for(int b=0; b<Keywords; b++)
		{
			//cout << b;
				HTMLData->Data[b] = new char[MAX_kw_Data_Lengh+1];
				//cout << "laenge=" << a << endl;		
		}

		int pos = 0;
		int lengh = 0;
	
		for(int a=0; a < Keywords; a++)
		{

				for(int bla=pos; HTML[bla] != '='; bla++)
				{
					HTMLData->Keywords[a][lengh] = HTML[bla];
					++lengh;
					pos +=1;
					//cout << "POS: " << pos << endl;
				}
				HTMLData->Keywords[a][lengh] = '\0';
				cout << "FULL STRING:"<< HTMLData->Keywords[a] << endl;
				lengh = 0;pos += 1;
	
				for(int coo=pos; HTML[coo] != '&' && HTML[coo] != '\0'; coo++)
				{
					HTMLData->Data[a][lengh] = HTML[coo];
					++lengh;
					pos += 1;
				}
				HTMLData->Data[a][lengh] = '\0';
				cout << "FULL STRING DATA:"<< HTMLData->Data[a] << endl;
				lengh = 0;pos +=1;
		
		}

	}
	//cout << "FINISH" << endl;

	
}
Ich hoffe mir kann da jemand behilflich sein :S
MfG Preakz


EDIT : /CLOSE FEHLER GEFUNDEN