Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- #include <stdlib.h>
- #include <string.h>
- void append(char* s, char c) //Funktion um einen Character an einen String anzuhängen
- {
- int len = strlen(s);
- s[len] = c;
- s[len+1] = '\0';
- }
- int nextviablepos(int outstrlen){ //Funktion returned Länge des Strings nachdem Leerzeichen hinzugefügt wurden bis sie durch 8 teilbar ist
- if (outstrlen % 8 == 0) //Fall ist durch 8 teilbar, ein Tab hinzufügen
- {
- return outstrlen+8;
- }
- while (outstrlen %8 != 0) //outstrlen wird um 1 erhöht bis durch 8 teilbar
- {
- outstrlen++;
- }
- return outstrlen;
- }
- int main(){
- int waitingforT=0;
- int i, j, n;
- char *instr=0;
- char outstr[256]="";
- char filename[256]="";
- long length;
- printf("Geben Sie einen Dateinamen oder direkt den Inputtext ein: ");
- scanf("%s", filename); //Eingabe Filename
- FILE *fp = fopen (filename, "r"); //Öffnung Datei
- if (fp) //wenn eine Datei mit eingegebenem Namen existiert
- {
- fseek (fp, 0, SEEK_END); //Sprung ans ende der datei
- length = ftell (fp); //weise Variable length Größe der Datei zu
- fseek (fp, 0, SEEK_SET); //Springe an den Anfang der Datei
- instr = malloc (length + 1); //allocate Memory mit Größe Datei +1 für \0, weil String
- if (instr)
- {
- fread (instr, 1, length, fp); //lies die Datei fp in instr in 1 Byte Stücken ein
- }
- fclose (fp); //schließe Datei, \0 für String
- instr[length] = '\0';
- }
- else
- {
- instr = filename; //falls der Filename ungültig ist, wird das Input verwendet
- }
- for (i=0; i<=strlen(instr); i++) //for Schleife für jeden Character im Input
- {
- if (waitingforT && instr[i]== 't') //wenn ein \ vorausging und der Character ein t ist
- {
- n=nextviablepos(strlen(outstr)); //n=gewünschte Länge des Strings nach Tab
- for (j=strlen(outstr); j<n; j++){ //for Schleife von aktueller Länge bis gewünschter Länge
- append(outstr, ' '); //Leerzeichen am ende des Strings einfügen
- }
- waitingforT = 0; //Reset waitingforT
- }
- else
- if (waitingforT) { //wenn ein \ vorkam, aber kein t folgte
- waitingforT = 0; //Reset waitingforT
- append(outstr, '\\'); // \ einfügen ans ende des Strings falls nach dem \ kein t folgte
- if (instr[i] == '\\') //Fall Doppelbackslash \\ waitingforT auf 1 setzen
- {
- waitingforT = 1;
- }
- else {
- append(outstr, instr[i]); //Fall Character außer \ und t nach \ (Character an String anfügen)
- }
- }
- else
- if (instr[i] == '\\') { //wenn ein \ vorkommt setze waitingforT auf 1
- waitingforT = 1;
- }
- else { //Normalfall, kein special Character
- append(outstr, instr[i]);
- }
- }
- printf("%s\n", outstr);
- return (1);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement