Ansi Zeichen ersetzen
-
mal ne generelle frage
kann man eigentlich die return werte weglassen wenn man das programm nachträglich nicht auf fehler prüft
sprich zweimal return 0 macht ja keinen sinn weil man dannn erst nicht weiss ob das programm funktioniert hat oder nicht
-
Danke für die schnelle Antwort.
Deine Methode ist wirklich besser. Nur bei deiner else Anweisung klappts nicht ganz
Der schreibt die ersten beiden Zeichen trotzdem hinein, da die else Anweisung nur für den Dritten Fall zählt.
Nun habe ich aber immer noch ein Problem. Das ersetzen von normalen Buchstaben und Zahlen funktioniert tadellos aber sobalds eben an solche Sonderzeichen geht klappts nicht mehr.
Idee: Wäre es sinnvoll die Zeichen per ANSI Code zu symbolisieren und wenn ja, wie mache ich das in C?
-
Peace_VsC schrieb:
mal ne generelle frage
kann man eigentlich die return werte weglassen wenn man das programm nachträglich nicht auf fehler prüft
sprich zweimal return 0 macht ja keinen sinn weil man dannn erst nicht weiss ob das programm funktioniert hat oder nicht
Na klar. Aber ob das Sinn macht ist die andere Frage. Was willst du z.B. statt dem ersten return 0; verwenden? goto ende_des_programms? exit(0)?
Hier ist imho return 0; schon die beste Lösung (wobei ich trotzdem return 1; schreiben würde... man kann ja nie wissen was man in der Zukunft eventuell noch alles überprüfen möchte ;))Caipi
-
Hat sich erledigt
War ganz einfach... muss doch erstmal auf sowas kommen
Ich hab jetzt mal aus Spass den Inhalt von inputChar als Integer ausgeben lassen und die Zahlen die ich da erhalten haben in die switch anweisung eingebaut und siehe da es funktioniert.Danke vielmal für die Hilfe.
-
Hmm da kommt mir noch gerade eine Frage in den Sinn:
Da die Dateien, welche solche Verfälschungen beinhalten relativ lange und nervige Namen haben, habe ich mir überlegt, ob es möglich ist einem c-Programm zu sagen, das eine Datei die per Drag n Drop aufs Exe File gezogen wurde, bearbeitet werden soll.
Ist das Möglich?
Mit Hilfe von einem Batch-File habe ich es leider nicht geschafft.
-
Da laeuftst in einen widerlichen Bereich hinein:
Der ASCII-Satz ist nur definiert bis 125 - d.h. das erste Bit im 8-Bit-Word ist immer 0. Wenn Dort ein Bit auftaucht, dann muss fuer die Ausgabe der Zeichensatz definiert werden (z. B. fuer West-Europa ISO-8859-1; fuer andere europaeische Schrifttypen gelten andere Saetze). Damit aber nicht genug daneben gibt es den UNICODE (eine 16-Bit Encoding-Table und - neben andrenen Verschluesselungen die haeufige UTF-8 Encoding).
Alle Schriften der ISO-8859-X, des US-ASCII und der UTF-8 haben gemeinsam die ersten 125 Zeichen. Fuer alle hoeheren Codes muss angeben werden, welche Encoding-Tabelle verwendet wird. Das muss aber Dein Interface nach aussen machen. Das hat nichts mehr mit dem C-Programm selber zu tun.
-
Sag das mal den Leuten die die Textfiles erstellen
Ds Problem mit dem Drag n Drop hat sich in der Zwischenzeit auch gelöst
-
Ich habe das Programm jetzt eigentlich soweit, dass Drag n Drop funktioniert und die Datei geöffnet werden kann etc.
Nur funktioniert das Schreiben nur bei der Methode mit der manuellen Eingabe, nicht beim Drag n Drop.Kann sich jemand den Quellcode mal anschauen? Ich komm echt nicht mehr weiter.
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]) { /* File Pointer und Variablen für das In und Output File */ FILE *Datei,*Output ; char szName[256],szNameOutput[256]; char dPfad[156],dName[100]; /* Gewünschte Datei eingeben und aus der Datei den Namen der Bearbeiteten erstellen */ if(argv[1]==NULL) { printf ("Dateiname eingeben : "); scanf ("%s",szName); sprintf(szNameOutput,"_%s",szName); } else { /* In szName die Datei mit vollständigem Pfad angeben */ sprintf(szName,"%s",argv[1]); /* Den übergebenen String auseinandernehmen und den Dateinamen speichern */ int i = 1; char* pToken = strtok(argv[1], "\\"); if (pToken) { i++; while ( (pToken = strtok(NULL, "\\")) ) { i++; sprintf(dName,"%s",pToken); } } sprintf(szNameOutput,"_%s",dName); } /* Kann die zu bearbeitende Datei geöffnet werden?*/ if((Datei = fopen (szName , "r"))==NULL) { printf("\nfehler beim oeffnen\n"); system("PAUSE"); return 0; } // Datei zum schreiben Output = fopen(szNameOutput,"w"); /* Zeichen für Zeichen auslesen und bearbeiten */ int inputChar = 0; while(inputChar != EOF) { inputChar = fgetc(Datei); if(inputChar != EOF) { /*Überprüfen und Ersetzen*/ switch(inputChar) { /*Das Zeichen ”*/ case 148: fputc('ö', Output); break; /*Das Zeichen */ case 129: fputc('ü', Output); break; /*Alle anderen Zeichen*/ default: fputc(inputChar, Output); break; } } } /* Dateien schliessen, Programm beenden*/ fclose(Datei); fclose(Output); printf("fertig ;)\n"); system("PAUSE"); return 0; }
-
kein bock das zu analyisieren. aber: //EDIT: war stuss, geht doch.
und: wenn du eine datei auf eine EXE ziehst, wird im endeffekt einfach der pfad\dateiname dieser datei als erstes parameter übergeben....
verstehe nicht genau was du mit "schreiben geht nicht" meinst.
irgendwie scheint mir, du denkst, dass du auch den outFileName bei drag'n'drop automatisch per parameter bekommst. dem ist nicht so.
-
Ne dachte ich auch nicht
Problem hat sich in der Zwischenzeit gelöst.