string vergleich - nich case sensitive strupr()



  • hi ich habe ein Problem u->arg1 ist ein Pointer auf einen String, ich möchte die Eingabe auf Fehler überprüfen und versuche es so:

    if(strncmp(strupr(u->arg1),"HTTP://",7)!=0){
    	u_respond(u, "Webfile muss mit http:// beginnen");
             return;
    }
    

    nur leider ist nach dem Vergleich der komplette string von u->arg1 in Grossbuchstaben. Da ich den String aber danach noch benötige und zwar unmanipuliert brauche ich einen Vergleich der den String unberührt lässt.

    Ideen ?

    TIA



  • es gibt auch eine strnicmp das macht sowohl ignopre case als acuh eine feste Anzahl.
    Gehört nicht zum Standard deswegen nennt das jeder CompilerHersteller etwas anders
    Bei MS VC 6.0 ist es

    int _strnicmp( const char *string1, const char *string2, size_t count );
    
    if(_strnicmp(u->arg1,"HTTP://",7)!=0){
        u_respond(u, "Webfile muss mit http:// beginnen");
             return;
    }
    


  • meine implementation, als ich sie mal gebraucht hab

    int strncmpi(char *str1, char *str2, size_t count)
    {
    	int result = 0;
    	while (*str1 && *str2 && !result && (count--))
    		if (tolower(*str1) != tolower(*str2))
    			result = (tolower(*str1) < tolower(*str2)) ? -1 : 1;
    		else
    			++str1, ++str2;
    
    	if (!*str1 ^ !*str2)
    		result = (*str1) ? 1 : -1;
    
    	return result;
    	/**
    	 *  str1 kleiner als str2 = -1
    	 *  str1 gleich str2      = 0
    	 *  str1 größer als str2  = 1
    	 */
    }
    


  • Thx das hat geklappt 🙂


Anmelden zum Antworten