Hey,
soll von der Schule aus diese Aufgabe programmieren:
Aufgabenstellung:
Schreiben Sie ein Programm, das den Inhalt einer Text-Datei analysiert. Dazu sei die Datei
faust.txt gegeben, die den folgenden Inhalt (aus Goethes Faust) hat:
> more faust.txt
Da steh ich nun,
ich armer Tor!
Und bin so klug
als wie zuvor;
>
Das Programm faust.c soll nun die Häufigkeit eines bestimmten Buchstabens, den der Benutzer
wählen kann, in dieser Datei ermitteln. Ein Programmlauf sollte wie folgt aussehen:
> ./faust
Ich kann Goethe-Texte fuer Sie auswerten. Welchen Buchstaben
moechten Sie zaehlen? n
Die erste Zeile lautet: "Da steh ich nun,"
Es gibt den Buchstaben n 2 Mal in dieser Zeile.
Die zweite Zeile lautet: "ich armer Tor! "
Es gibt den Buchstaben n 0 Mal in dieser Zeile.
Die dritte Zeile lautet: "Und bin so klug "
Es gibt den Buchstaben n 2 Mal in dieser Zeile.
Die vierte Zeile lautet: "als wie zuvor; "
Es gibt den Buchstaben n 0 Mal in dieser Zeile.
>
Um die Sache zu vereinfachen, können Sie davon ausgehen, dass jede Zeile in der Datei faust.txt
aus exakt 16 Zeichen besteht. (Das ist normalerweise natürlich nicht der Fall. Die Datei wurde so
modifiziert, dass sie diese Bedingung erfüllt. Wir werden später lernen, wie man mit beliebig
langen Zeilen umgeht.)
Ich hab eigl schon soweit alles gemacht, dachte ich zumindest.
Wenn ich das Programm dann ausführen, dann kommt eine Fehlermeldung und das Fenster wird geschlossen:(
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE *fp;
fp = fopen("C:\\Prg\\faust.txt","r");
char v;
char c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,c11,c12,c13,c14,c15,c16;
int count = 0;
printf("Ich kann Goethe-Texte fuer Sie auswerten.\n Welchen Buchstaben moechten Sie zaehlen?");
scanf("%c",v);
fscanf(fp,"%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",&c1,&c2,&c3,&c4,&c5,&c6,&c7,&c8,&c9,&c10,&c11,&c12,&c13,&c14,&c15,&c16);
if (v == c1)
{
count +=1;
}
if (v == c2)
{
count +=1;
}
if (v == c3)
{
count +=1;
}
if (v == c4)
{
count +=1;
}
if (v == c5)
{
count +=1;
}
if (v == c6)
{
count +=1;
}
if (v == c7)
{
count +=1;
}
if (v == c8)
{
count +=1;
}
if (v == c9);
{
count +=1;
}
if (v == c10)
{
count +=1;
}
if (v == c11)
{
count +=1;
}
if (v == c12)
{
count +=1;
}
if (v == c13)
{
count +=1;
}
if (v == c14)
{
count +=1;
}
if (v == c15)
{
count +=1;
}
if (v == c16)
{
count +=1;
}
printf("Die erste Zeile lautet: Da steh ich nun,\nEs gibt den Buchstaben %c%i Mal in dieser Zeile.",v,count);
system("PAUSE");
return 0;
Es ist zwar tierisch lang, aber ich kann leider noch nicht mit schleifen umgehen.:confused:
Vielleicht kann mir jemand auch noch einen tipp geben wie man das verkürzen kann:rolleyes:
Ich weiß echt nicht was ich da falsch gemacht habe...
Wäre super nett wenn mir da jemand helfen könnte:)