C Programm



  • Hallo

    ich komme leider nicht weiter , bin dabei ein programm zu schreiben in dem ich eine datei einlese und um wandeln möchte .

    Die ein gelesene datei sieht so aus:

    ORGANIZATION_BLOCK MAIN:OB1
    TITLE=PROGRAMMKOMMENTARE
    BEGIN
    Network 1 // Netzwerktitel
    // Netzwerkkommentar
    LD E0.0
    U E0.1
    LDN E0.2
    NOT
    U A0.0
    OLD
    = A0.0
    = A0.1
    END_ORGANIZATION_BLOCK

    und ich möchte jetzt von LD an alles was rechts ist ,
    also LD,U,LDN,NOT,U,OLD,=,= in eine Stuktur oder so
    und das gleiche mit den E0.0 ... aber in ne andere .
    angefangen habe ich die datei aus zulesen . möchte das aus

    dem :

    LD E0.0
    U E0.1
    LDN E0.2
    NOT
    U A0.0
    OLD
    = A0.0
    = A0.1

    das wird:

    U E0.0
    U E0.1
    S A0.0
    UN E0.2
    R A0.0
    = A0.1

    Anfang C:

    #include <stdio.h>
    #include <stdlib.h>

    int main()
    {
    FILE *stream;
    int i;
    char puffer[100];
    stream=fopen("c.awl","r");
    i=0;
    while(1)
    {
    fgets(puffer,100,stream);
    if(puffer[0]=='B')
    break;
    i++;
    }
    while( (i=fgetc(stream)) !=EOF)
    putchar(i);
    fclose(stream);
    return 0;

    ich Danke schon mal im vorraus gruß



  • Und die Frage ist? Aber vielleicht hilft dir auch das hier weiter: http://www.c-plusplus.net/forum/200753



  • Ja die Frage ist wie realisiere ich das einlesen und wandeln



  • #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    typedef struct test
    {
    	char test1[20];
    	char test2[20];
    	char test3[20];
    	char test4[20];
    	char test5[20];
    	char test6[20];
    	char test7[20];
    	char test8[20];
    } TEST;
    
    int main()
    {
    	FILE *stream;
    	char *ptr;
    	char puffer[100], bezeichner[10];
    	TEST speicher, speicher2;
    	stream = fopen("test.txt", "r");
    	if(stream == NULL)
    	{
    		printf("Fehler beim öffnen der Datei\n");
    		getchar();
    		return 0;
    	}
    	while(fgets(puffer, 100, stream) != NULL)
    	{
    		if(puffer[0] == '/')
    			break;
    		else
    			printf("%s", puffer);
    	}
    
    	while(fgets(puffer, 100, stream) != NULL)
    	{
    		ptr = strchr(puffer, '\n');
    		if(ptr != NULL)
    			*ptr = '\0'; // \n löschen		
            ptr = strchr(puffer, ' ');
    		if(ptr == NULL)
    		{
    			printf("Fehler\n");
    			getchar();
    			return 0;
    		}
    		*ptr = '\0';
    		ptr = ptr + 1;
    
    		strcpy(bezeichner, "U ");
    
    		strcat(bezeichner, ptr);
    		strcpy(speicher2.test1, bezeichner);
    		strcpy(speicher.test1, puffer);
    
    		printf("%s\n", speicher.test1);
    		printf("%s\n", speicher2.test1);
    		break;		
    	}
    
    	getchar();
    	return 0;
    }
    

    Das break; am Schluss der letzten Warteschleife musst du natürlich wegmachen. Zudem musst du die Stellen wo die strings gespeichert werden (bei mir speicher.test1) flexibel machen, vllt mit switch oder so. Aber so funkioniert es zumindest bei mir für das erste Element problemlos. Nur so aus Interresse: Was soll das mal werden?



  • Es soll ein Programm werden was einen Programmcode einer S7 200 in eine S7 300 wandelt bin aber noch sehr am Anfang mit C

    so richitg weiss ich noch nicht weiter



  • lass es laufen, arbeit dich durch und wenns noch klemmt, meld dich...



  • Treffnix061283 schrieb:

    Es soll ein Programm werden was einen Programmcode einer S7 200 in eine S7 300 wandelt bin aber noch sehr am Anfang mit C
    so richitg weiss ich noch nicht weiter

    Für solchen Textersatz wäre awk oder gleich Perl besser geeignet.


Anmelden zum Antworten