Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
char zeile[256];
while (NULL != fgets(zeile, 256, f)) {
if (zeile[0] != '|') {
// unerwartetes Zeichen ...
} else {
const char *wort = zeile + 1;
//wird gesagt, dass zeile irgendein Zeichen länger ist als Wort?
char *konj, *typ, *stamm;
//Initialisierung von char *konj, char *typ, char *stamm?
konj = strchr(wort, '+');
//Auslesen bis +?
if (konj == NULL) continue;
//Falls konj==+?
typ = strchr(konj, ':');
if (typ == NULL) continue;
stamm = strchr(typ, '*');
if (stamm == NULL) continue;
*konj++ = '\0';
*typ++ = '\0';
*stamm++ = '\0';
//Löschen der chars?
printf("Wort: %s\n"
"Konjugationen: %s\n"
"Typ: %s\n"
"Stamm: %s\n",
wort, konj, typ, stamm);
}
}
#include "stdlib.h"
#include "windows.h"
#include "stdio.h"
#include "conio.h"
#include "time.h"
int main(int argc, char *argv[])
{
FILE* f;
FILE* fa;
int inhalt;
char Abfrage[256];
char Ruckmeldung[256];
int Konj;
f = fopen("Buch.lltv", "r");
if(f==NULL)
{
printf("Es wurde kein Woerterbuch gefunden. Bitte lade oder erstelle eines.\n Das Programm kann nicht fortfahren.\n\n");
_sleep(5000);
return 0;
}
printf("Bitte gib das gewuenschte Wort ein.\n");
scanf("%s", &Abfrage);
fseek(f,0,SEEK_SET);
inhalt=0;
char zeile[256];
while (NULL != fgets(zeile, 256, f))
{
if (zeile[0] != '|')
{
printf("Dieses Woerterbuch ist Fehlerhaft.\n");
}
else
{
const char *wort = zeile + 1;
char *konj, *typ, *stamm;
konj = strchr(wort, '+');
if (konj == NULL) continue;
typ = strchr(konj, ':');
if (typ == NULL) continue;
stamm = strchr(typ, '*');
if (stamm == NULL) continue;
*konj++ = '\0';
*typ++ = '\0';
*stamm++ = '\0';
if(strstr(zeile,Abfrage)!=NULL)
{
}
else
{
continue;
}
printf("\n\n"
"Wort: %s\n"
"Konjugationen: %s\n"
"Typ: %s\n"
"Stamm: %s\n"
"\n\n",
wort, konj, typ, stamm);
}
}
fclose(f);
system("PAUSE");
return 0;
}
Genau da wo die Ausgabe gemacht wird...Und wo kann bzw. soll man überprüfen, ob die Frage des Users mit der Ausgabe übereinstimmt? Bis jetzt gibt das Programm einfach alle Wörter der Datei aus.
Das aktuell aus der Datei ausgelesene Wort befindet sich in der Variablen "wort". Warum nimmst du denn nicht einfach diese Variable zum Vergleichen?Ich habe nun vieles mit Deepthroats Code ausprobiert und habe damit folgendes geschrieben:
C:if(strstr(zeile,Abfrage)!=NULL) { }
if (strcmp(wort, Abfrage) == 0) {
...
}
Das aktuell aus der Datei ausgelesene Wort befindet sich in der Variablen "wort". Warum nimmst du denn nicht einfach diese Variable zum Vergleichen?
Ich würde auch nicht unbedingt "Abfrage" in "zeile" mit strstr suchen, da du sonst auch Teilworte finden würdest. (z.B. halten => vorenthalten ?)
C:if (strcmp(wort, Abfrage) == 0) { ... }
Das kommt auf die Anforderung an; und wie groß das Wörterbuch ist. Wenn mir für ein Wort 50 Treffer angezeigt werden (die nicht sortiert sind), dann wäre würde ich evtl. Schwierigkeiten haben das Wort zu finden was ich suche...Das wäre natürlich auch eine Möglichkeit. strstr() hat hier aber den Vorteil, dass es mehr Vorschläge liefert als strcmp(), was bei einem Wörterbuch durchaus von Vorteil ist, oder?
Beide Funktionen sind von der Laufzeit her zu vernachlässigen.Oder bremst strstr() das System bei einer grossen Datei stärker als strcmp?
cwriter
Das kommt auf die Anforderung an; und wie groß das Wörterbuch ist. Wenn mir für ein Wort 50 Treffer angezeigt werden (die nicht sortiert sind), dann wäre würde ich evtl. Schwierigkeiten haben das Wort zu finden was ich suche...
Wie willst du denn präziser Fragen wenn das Wort nunmal "x" ist und "x" in 50 anderen Worten vorkommt?Darüber habe ich mir auch schon Gedanken gemacht, aber es ist ja wie bei Google: Findet man was nicht, versucht man es mit präziseren Fragen.
Du könntest das Ausgabeformat ändern.Mein Problem ist , dass die Kommandozeile "nur" etwa 300 Zeilen hat, was bei 5 Zeilen pro Wort ins Gewicht fällt.
Stelle die Puffergröße höher ein. Siehe z.B. http://www.its05.de/computerwissen-...m-windows/cmd_exe_-_eigenschaften_einste.htmlKennst du eine Möglichkeit, die Zeilenanzahl der cmd zu vergrössern?