/media/sda-magnetic/david/Extern-Magnetic-2022-06-29/Extern01/Dokumente-2021-05-8/disk10-ab-2020-01-10/02-debian-pc2-work/informatik/c-2020-11-08/arithmetic.c


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

#define N_LINES         2048
#define SIZE_LINE_CH    64

#define E_FILE_NOT_OPEN -1
#define E_NO_MEM        -2

#define E_STR_FILE_NOT_OPEN "Can't open file"
#define E_STR_NO_MEM        "No Memory"


int main (int argc, char *argv[]) {
    FILE *fp;
    char opcode[SIZE_LINE_CH];
    size_t n;
    size_t i;
    
    char op1 [SIZE_LINE_CH];
    char op2 [SIZE_LINE_CH];
    char op3 [SIZE_LINE_CH];
    
    char op1des [SIZE_LINE_CH];
    char op2des [SIZE_LINE_CH];
    char op3des [SIZE_LINE_CH];
    
    if ((fp = fopen (argv[1], "r")) == NULL) {
        perror (E_STR_FILE_NOT_OPEN);
        return E_FILE_NOT_OPEN;
    }
    
    while (!feof(fp)) {
        fscanf (fp, "%s", opcode);
        
        if (strcmp (opcode, "add") == 0) {
            fscanf (fp, "%s", op1);
            fscanf (fp, "%s", op2);
            fscanf (fp, "%s", op3);
            
            strcpy (op1des, op1+1);
            *(op1des + strlen (op1des) - 1) = 0;
            
            printf ("clr %s\n", op1des);
            
            if (op2[0] == '_') {
                strcpy (op2des, op2+1);
                *(op2des + strlen (op2des) - 1) = 0; 
                printf ("add %s %s\n", op1des, op2des);
            }

            else if ((op2[0] >= '0') && (op2[0] <= '9')) {
                strcpy (op2des, op2);
                *(op2des + strlen (op2des) - 1) = 0; 
                printf ("add %s %s\n", op1des, op2des);
            }

            
            if (op3[0] == '_') {
                strcpy (op3des, op3+1);
                printf ("add %s %s\n", op1des, op3des);
            }

            else if ((op3[0] >= '0') && (op3[0] <= '9')) {
                strcpy (op3des, op3);
                *(op3des + strlen (op3des) - 1) = 0; 
                printf ("add %s %s\n", op1des, op3des);
            }

            //printf ("%s %s %s %s\n", opcode, op1des, op2, op3);
        }
        
        //else if (strcmp (buf, "mov") == 0)
        
        
    }
    
    fclose (fp);
return 0;
}