Values auslesen und formatiert wiedergeben.



  • Hallo,
    also ich habe ein Problem und zwar geht es darum das ich eine .sql auslesen will und diese formatiert ausgeben will.
    Die txt sieht so aus:

    INSERT INTO user VALUES('2', '2', '', '0', 'IrgendeinValue',
    'abcdefghijklmnopqrstuvwxyz', '2009-01-27', 'IrgendeinValue',
     '0', '', '', '', '', '', '', '', '1', '0', 'Junior', '0', '1233029417'
    , '0', '1233159116', '1233345675', '1233067685', '4', '1', '10', '5'
    , '-5', '0', '0', '0', '0', '0', '11537495', '', '0000-00-00', '-1'
    , '-1', '76.111.246.52', '0', '1', '0', '0', '-1', '0', '0', 'FCa'
    , '0', '0', '0', '', '0', '0', '27', '0', '0', '0', '0', '0',
     '0', '0', '0', '0', NULL, NULL, NULL);
    

    Nun würde ich gerne value 5,6,8 und 49 rausfiltern und in der console wiedergeben.
    Hab mir überlegt das es wohl das einfachste wäre die kommas nach

    INSERT INTO user VALUES(
    

    abzuzählen.
    Hatte dann grad mal gegooglet konnte aber nicht wirklich die funktionen finden die ich brauche 😕
    Ich suche übrigens nach C funktionen.
    Wäre sehr dankbar für jede hilfe 🙂



  • Hi,
    dir helfen die Begriffe FILE*, fopen, fgetc, fclose, putchar weiter.
    Guckst du unten, wie man jeden Wert filtern und in einer Zeile anzeigen kann:

    #include <stdio.h>
    #define APOSTROPHE '\'' 
    
    int eret ( char* e )
    {
    	if (e) perror(e);
    	else printf("%s\n", strerror(errno));
    }
    
    int main()
    {
    	int c = 0, n = 0;
    	char* fname = "test.sql";
    
    	FILE* fp = fopen (fname, "rb");
    	if ( fp == NULL ) return eret (fname);
    	while ( ( c = fgetc(fp)) != EOF )
    	{
    		if ( c == APOSTROPHE )
    		{
    			n = 0;
    			while ( ( c = fgetc(fp) ) != EOF  && c != APOSTROPHE )
    			{
    				putchar(c);
    				n++;
    			}
    			if (n) puts("");
    		}
    	}
    	fclose(fp);
    	return 0;
    }
    

    Je nachdem was du vorhast, kannst du anstatt in die Konsole in ein char Array schreiben, oder mit scanf direkt in Variable konvertieren.
    Gruß,
    B.B.



  • also nachdem das ja SQL ist und da natürlich auch sowas wie ein ' im string
    vorkommen kann würde dein code bei einem string wie 'a\'b' nur a\ ausgeben
    oder hab ich da was verpasst;)

    btw. dass ist doch eher ein fall für ansi c und hat wenig mit linux zu tun


Anmelden zum Antworten