Hey Leute,
ich komme bei dieser Aufgabe leider nicht weiter, ich möchte eine Datei einlesen die so aufgebaut ist
ab
hj
km
ol
pu
Also es stehen immer zwei Buchstaben in einer Zeile. Das einlesen habe ich bereits durch fgets realisiert, allerdings liest es mir - trotz überprüfung - immer zwei zeichen zu viel ein, egal wie viele Leerzeichen oder Zeilenumbrüche ich am ende einfüge! Eig. wollt eich den string jetzt einfach um 2 Stellen kürzen, da kam jedoch eine Fehlermeldung....
das wollte ich folgendermaßen machen:
laenge = (int)strlen(speichern);
printf("laenge:%i\n\n", laenge);
i=laenge--;
printf("laengexx:%i\n\n", i);
=>
Warnung: assignment makes integer from pointer without a cast
Deshalb überprüfe ich jetzt ob das eingelesene zeichen ein Buchstabe ist, also der char einen wert zwischen 65 und 90 bzw 97 und 122 für kleinbuchstaben hat. Wenn ich aber z. B. den unteren wert auf 70-90 einschränke und ein "A" eingebe, wird dieses nicht gefiltert!! => Meine if-bedingung stimmt nicht.... Ich finde jedoch keinen Fehler....
Hoffe ihr seid erfolgreicher ;-)
#include <stdio.h>
#include <string.h>
int main(void)
{
FILE *datei;
char einlesen [3], speichern[100];
int i=-1;
/* int ret; */
int laenge;
datei = fopen("test.txt","r");
if (!datei) {
printf("Fehler beim Öffnen der Datei! (Lesen)");
return 1;
}
while(fgets(einlesen, 100, datei) != NULL)
{
printf("einlesen:%s", einlesen);
if( ((einlesen[0] >68 && einlesen[0] < 91) || (einlesen[0] >96 && einlesen[0] < 123)) || ((einlesen[1] >=65 && einlesen[1] <= 90) || (einlesen[1] >=97 && einlesen[1] <= 122)) )
{ printf("xx %i", einlesen[0]); printf(" %i xx", einlesen[1]);
i++;
speichern[i]=einlesen[0];
i++;
speichern[i]=einlesen[1];
}else printf("Ihre Codetabelle ist nicht korrekt aufgebaut, bitte ueberpruefen!\n");
}
printf("\n\nspeichern: %s\nlaenge speichern: %d\n\n", speichern, strlen(speichern));
fclose(datei);
return 0;
}
Danke,
Grüße Didi