INI Dateien mit C bearbeiten



  • habe ein problem:

    cfg()
    {		
    		int Auswahl;
    		char buffer[20];
    		char buffer2[5];
    		int Funktion;
    
    		printf("\t\t\t[>Config");
    		printf("\n\n");
    
    		printf("\t\t[> 01:Menuansicht aendern");
    		scanf("%i",&Auswahl);
    		fflush(stdin);
    
    		switch(Auswahl)
    		{
    			case 1:
    
    				GetPrivateProfileString("GENERAL", "menu", "Default", buffer, sizeof(buffer), "C:\\c_cfg.ini");
    
    				printf("\n\tDerzeitig angezeigtes Menu: %c",buffer[0]);
    				printf("\n\n\tNeue MenuID: ");
    				scanf("%c",&buffer2[0]);
    				fflush(stdin);
    
    				WritePrivateProfileString("GENERAL", "menu", buffer2, "C:\\c_cfg.ini");
    
    				printf("\nErfolgreich geaendert");				
    
    			break;
    		}
    
    		return 0;
    }
    

    dies ist mein programm, dass in eine ini-datei schreib soll, nur wenn ich die öffne, sieht das ganze so aus:

    [GENERAL]
    menu=1ÌÌÌÌÌÌÌ5ÌÌÌÌÌÌÌ1ÌÌÌÌÌÌÌ2
    menu_max=2
    

    d.h. alle eingaben wurden hintereinander geschrieben oder?...gibts einen befehl um den wert menu zu löschen bzw zu leeren?



  • Hallo,

    das Ende von buffer wird bei WritePrivateProfileString nicht erkannt, deswegen steht Müll in der INI-Datei (scanf setzt bei "%c" kein terminierendes Null-Byte!). Einfache Änderung:

    scanf("%s",buffer2);
    

    Löschen des Eintrags "menu":

    WritePrivateProfileString("GENERAL", "menu", NULL, "C:\\c_cfg.ini");
    

    MfG



  • vielen dank für die schnelle hilfe 🙂 👍


Anmelden zum Antworten