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);
}