001
08.07.2015, 23:21 Uhr
Hans
Library Walker (Operator)
|
Hi,
hast Du schon mal versucht, den Fehler mit einem Debugger aufzuspüren? Ansonsten wäre es gut, wenn Du eine Wortliste mitliefern würdest, anhand derer man versuchen kann, das Problem nachzuvollziehen.
Hans
P.S. Dann hab ich hier mal eine neu formatierte Version Deines Quelltextes, wo ich auch ein paar Änderungen dran vorgenommen habe. U.a. hab ich Variablendefinitionen an den Anfang gestellt, weil mein derzeitiger Compiler es nicht anders mag.
C++: |
///////////////////////////////////////////////////////////////////////////////////////////////////// #include <stdio.h> #include <stdlib.h> #include <stdarg.h> #include <string.h> #include <stdbool.h>
#define MAX 50 //maximale größe des Eingabestrings und maximale chars pro reihe in datei #define DATEINAME "Datenbank.txt" //später txt wegnehmen
int teste_wort(char string[]) { FILE *datei; char pos_char, string_reihe[MAX] = { 0 }; int reihe = 0, pos_buchstabe = 0; /* reihe wird nicht verwendet, kann später kommen */ bool wort_existent = false; datei = fopen(DATEINAME, "rt"); if (datei == NULL) { fprintf(stderr, "Datei %s konnte nicht geöffnet / bearbeitet werden.", DATEINAME); exit(1); // Programmabbruch eingebaut, sonst läuft es nach Ausgabe der Fehlermeldung weiter. } while ( ( pos_char = fgetc ( datei ) ) != EOF ) { string_reihe[pos_buchstabe] = pos_char; pos_buchstabe++; if ( pos_char == '\n' ) { string_reihe[strlen(string_reihe) -1 ] = '\0'; if( strcmp( string, string_reihe ) == NULL ) { wort_existent = true; break; } reihe++; pos_buchstabe=0; } } fclose(datei); return wort_existent; }
int in_datei_schreiben(char string[]) // wort wird ans ende der datei gespeichert { FILE *datei; datei = fopen(DATEINAME, "a"); if(datei == NULL) fprintf(stderr, "Datei %s konnte nicht geöffnet / bearbeitet werden.", DATEINAME); fprintf(datei, string); fprintf(datei, "\n"); fclose(datei); }
void eingabe() //eingabe wird formatiert und an in_datei_schreiben übergeben { char eingabestr[MAX] = { 0 }; int anz = 0, eing_stringPosition = 0; char tempwort[MAX] = { 0 }; printf("Text eingeben : "); fgets(eingabestr, MAX, stdin); for(int pos=0; pos < strlen(eingabestr)-1; pos++) //string einlesen und einzelne wörter weiterleiten { tempwort[eing_stringPosition] = eingabestr[pos]; eing_stringPosition++; if(eingabestr[pos] == ' ' || eingabestr[pos] == '\0') { if( teste_wort(tempwort) == false ) // ein wort { in_datei_schreiben(tempwort); printf("%s existiert noch nicht\n", tempwort); } anz++; eing_stringPosition=0; for(int i=0; i < strlen(tempwort); i++) tempwort[i] = ' '; } } if( teste_wort(tempwort) == false ) { in_datei_schreiben(tempwort); printf("%s existiert noch nicht\n", tempwort); } } int main() { eingabe(); return 0; }
|
-- Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung. Dieser Post wurde am 08.07.2015 um 23:27 Uhr von Hans editiert. |