Und wieder eine 'unusual programm termination'



  • Der code

    //commandline interpreter
    
    void	clInterpret(vector<LPTSTR>* inbounds,vector<LPTSTR>* outparam){
    
    	LPTSTR	cline		=	::GetCommandLine();
    	LPTSTR	brackets	=	strbrk(cline);
    	LPTSTR	ebrackets	=	strbet(cline,'[',']');
    
    	LPTSTR	seps=" ,";
    
    	LPTSTR	token;
    
    	//inparam
    	if(_stricmp(brackets,"$$nostring")!=0){
    
    	token = strtok( brackets, seps );
    	   while( token != NULL )
    	   {
    			inbounds->push_back(token);
    		  token = strtok( NULL, seps );
    	   }
    	}
    	//outparam
    	if(_stricmp(ebrackets,"$$nostring")!=0){
    
    	token = strtok( ebrackets, seps );
    	   while( token != NULL )
    	   {
    			outparam->push_back(token);
    		  token = strtok( NULL, seps );
    	   }
    	}
    

    produziert mit

    vector<LPTSTR>	in;
    		vector<LPTSTR>	out;
    
    		clInterpret(&in,&out);
    
    		for(int i =0;i<in.size();++i)printf("instring[%d]=%s\n",i,in.at(i));
    		for(int j =0;j<out.size();++j)printf("outstring[%d]=%s\n",j,out.at(i));
    

    den fehler

    Runtime Error!
    
    Program:...
    
    This application has requested blablabla
    

    Wie beheb ich das Problem?



  • 1. richtiges Forum verwenden
    2. Fehler beschreiben und nicht einfach hinklatschen
    3. Umgebung aufführen
    4. Debugger verwenden



  • Ok das mit dem Forum stimmt, hab noch das Cli und .Net übersehn weil ich nicht viel zeit hatte, hab deshalb auch nicht den Fehleer abgetippt

    Die Umgebung besteht aus einem _tmain(int argc,TCHAR ...) und hilft dir auch nicht großartig weiter

    Das Problem tritt aber nur ein, wenn ich strbet einsetze, also kuck ich da mal nach
    Vielleicht habe ich da ja einen Fehler eingebaut, der den Compiler zwar nicht stört, das Programm aber Abstürzen lässt

    Wen ein Mod mal so nett wär das ins C++ Forum zu verschieben



  • Ok hat sich erledigt

    Da hat sich n freches 'i' an die stelle von 'j' geschlichen



  • Mit Umgebung war vllt. der Compiler und das OS gemeint (IMHO ist strbrk und strbet kein AnsiC
    http://www.thinkage.ca/english/gcos/expl/c/lib/strbrk.html )

    Btw.: Was hat Dein Quelltext mit C++ zu tun ? Das ist auch das falsche Forum.



  • strbrk und strbet sind zwei Funktionen die ich mir selbst geschrieben hab

    strbrk liest den string zwischen zwei Klammern
    strbet liest den string zwischen zwei als Argumente angegebenen Chars


Anmelden zum Antworten