Sorry dafür.
Code: Alles auswählen
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void Tastenpuffer()
{
    int c;
    while( ((c = getchar()) != -1) && (c != '\n') );
}
struct Elemente
{
    char element1 [64];
    char element2 [64];
    char element3 [64];
    char element4 [64];
    char element5 [64];
};
struct EingabeElemente
{
    char element11 [64];
    char element12 [64];
    char element13 [64];
    char element14 [64];
    char element15 [64];
};
void gleichSchreiben(int j, int k, struct Elemente *elemente, FILE *file)
{
    int length = strlen(elemente[k].element5);
    int anzahl = length + 100;
    char gleich [] = "=";
    char neuezeile [] = "\n";
    char programmende [] = "                    --------------Programmende--------------                    \n";
    fwrite(neuezeile, sizeof(char), 1, file);
    for(j = 1; j <= anzahl; j++)
    {
        fwrite(gleich, sizeof(char), strlen(gleich), file);
    }
    fwrite(programmende, sizeof(char), strlen(programmende), file);
    fwrite(neuezeile, sizeof(char), 1, file);
}
void TabellenHeader(struct Elemente *elemente, int k)
{
    printf("                    ----------------------------------------                    \n");
    printf("Erstes Element: ");
    fgets(elemente[k].element1, sizeof(elemente[k].element1), stdin);
    printf("Zweites Element: ");
    fgets(elemente[k].element2, sizeof(elemente[k].element2), stdin);
    printf("Drittes Element: ");
    fgets(elemente[k].element3, sizeof(elemente[k].element3), stdin);
    printf("Viertes Element: ");
    fgets(elemente[k].element4, sizeof(elemente[k].element4), stdin);
    printf("Fuenftes Element: ");
    fgets(elemente[k].element5, sizeof(elemente[k].element5), stdin);
    elemente[k].element1[strlen(elemente[k].element1)-1] = '\0';
    elemente[k].element2[strlen(elemente[k].element2)-1] = '\0';
    elemente[k].element3[strlen(elemente[k].element3)-1] = '\0';
    elemente[k].element4[strlen(elemente[k].element4)-1] = '\0';
    elemente[k].element5[strlen(elemente[k].element5)-1] = '\0';
    printf("\n                    ----------    Ihre Eingabe    ----------                    \n");
}
void TabellenHeaderSchreiben(struct Elemente *elemente, int k, FILE *file)
{
    int length = strlen(elemente[k].element5);
    int anzahl = length + 100;
    int j;
    char gleich [] = "=";
    char neuezeile [] = "\n";
    fseek(file, 0, SEEK_SET);
    fwrite(elemente[k].element1, sizeof(char), strlen(elemente[k].element1), file); //strlen(elemente[i].element1)
    fseek(file, 20, SEEK_SET);
    fwrite(elemente[k].element2, sizeof(char), strlen(elemente[k].element2), file);
    fseek(file, 40, SEEK_SET);
    fwrite(elemente[k].element3, sizeof(char), strlen(elemente[k].element3), file);
    fseek(file, 60, SEEK_SET);
    fwrite(elemente[k].element4, sizeof(char), strlen(elemente[k].element4), file);
    fseek(file, 80, SEEK_SET);
    fwrite(elemente[k].element5, sizeof(char), strlen(elemente[k].element5), file);
    fwrite(neuezeile, sizeof(char), 1, file);
    for(j = 1; j <= anzahl; j++)
    {
        fwrite(gleich, sizeof(char), strlen(gleich), file);
    }
    fwrite(neuezeile, sizeof(char), 1, file);
}
void ElementEingabe(struct EingabeElemente *person, int i, int k, struct Elemente *elemente)
{
    printf("%s: ", elemente[k].element1);
    fgets(person[i].element11, sizeof(person[i].element11), stdin);
    printf("%s: ", elemente[k].element2);
    fgets(person[i].element12, sizeof(person[i].element12), stdin);
    printf("%s: ", elemente[k].element3);
    fgets(person[i].element13, sizeof(person[i].element13), stdin);
    printf("%s: ", elemente[k].element4);
    fgets(person[i].element14, sizeof(person[i].element14), stdin);
    printf("%s: ", elemente[k].element5);
    fgets(person[i].element15, sizeof(person[i].element15), stdin);
    person[i].element11[strlen(person[i].element11)-1] = '\0';
    person[i].element12[strlen(person[i].element12)-1] = '\0';
    person[i].element13[strlen(person[i].element13)-1] = '\0';
    person[i].element14[strlen(person[i].element14)-1] = '\0';
    person[i].element15[strlen(person[i].element15)-1] = '\0';
}
void ElementSchreiben(struct EingabeElemente *person, int i, FILE *file)
{
    char neuezeile [] = "\n";
    int lengtha = 20 - strlen(person[i].element11);
    int lengthb = 20 - strlen(person[i].element12);
    int lengthc = 20 - strlen(person[i].element13);
    int lengthd = 20 - strlen(person[i].element14);
    int lengthe = 20 - strlen(person[i].element15);
    fseek(file, 0, SEEK_END);
    fwrite(neuezeile, sizeof(char), 1, file);
    fwrite(person[i].element11, sizeof(char), strlen(person[i].element11), file);
    fseek(file, lengtha, SEEK_CUR);
    fwrite(person[i].element12, sizeof(char), strlen(person[i].element12), file);
    fseek(file, lengthb, SEEK_CUR);
    fwrite(person[i].element13, sizeof(char), strlen(person[i].element13), file);
    fseek(file, lengthc, SEEK_CUR);
    fwrite(person[i].element14, sizeof(char), strlen(person[i].element14), file);
    fseek(file, lengthd, SEEK_CUR);
    fwrite(person[i].element15, sizeof(char), strlen(person[i].element15), file);
    fwrite(neuezeile, sizeof(char), 1, file);
    i++;
}
int main()
{
    struct Elemente elemente[1];
    struct EingabeElemente person[5];
    FILE *file = fopen("Elementetabelle.txt", "w");
    int i = 0, j = 0, k = 0, eingabe = 0;
    printf("================================================================================");
    printf("                              = Willkommen =                                    ");
    printf("================================================================================\n");
    printf("Dieses Programm fragt nach mehreren Elementen, die sie selbst bestimmen koennen\n(max.5).\nDasProgramm listet diese Elemente in einer Tabelle auf.\n");
    printf("Anschliessend koennen sie Werte in die Tabelle eintragen und dann bearbeiten\nDie Tabelle wird unter dem Namen Elementetabelle.txt abgespeichert.\n");
    printf("\n================================================================================");
    printf("Dieses Programmfenster erkennt keine Sonderzeichen.\nBitte beschraenken sie sich hier auf ss, ae, oe, ue ...\n");
    printf("================================================================================");
    printf("\nSie werden nun nach 5 Elementen gefragt.\nWenn sie weniger benoetigen unterbrechen sie die Eingabeaufforderung mit '0'.\n");
    printf("\n");
    TabellenHeader(&elemente[k], k);
    while(1)
    {
        printf("================================================================================");
        printf("\nSind sie mit der Eingabe zufrieden, oder wollen sie etwas verbessern?\n\n");
        printf("Waehlen sie bitte aus:\nBestaetigen: 1\nVerbessern: 2\n");
        scanf("%d", &eingabe);
        printf("================================================================================");
        Tastenpuffer();
        if(eingabe == 2)
        {
            TabellenHeader(&elemente[k], k);
        }
        else if(eingabe == 1)
        {
            TabellenHeaderSchreiben(&elemente[k], k, file);
            printf("Ihre 5 Elemente wurden in die Datei geschrieben,\nnun koennen sie den Elementen Werte zuweisen.\nSie werden nun nach 10 Wertepaketen abgefragt.\n");
            printf("Achten sie dabei auf das Geschriebene, da dieser Vorgang nicht wiederholt wird.\n\n");
            for(j = 0; j <= 4; j++)
            {
                ElementEingabe(&person[i], i, k, &elemente[k]);
                printf("\n");
                ElementSchreiben(&person[i], i, file);
            }
            gleichSchreiben(j, k, &elemente[k], file);
            printf("                    --------------Programmende--------------                    \n");
            return 0;
        }
    }
    fclose(file);
}