Bekomme Prog nicht zum laufen
-
Hi ich habe folgendes Programm und bekomme es einfach nicht zum laufen.
#include <stdio.h> #include <string.h> #define getch() getc(stdin) #define ungetch(c) ungetc(c, stdin) #define MAXWORD 30 #define MAXWOERTER 1000 #define TRENNZEICHEN '1' int lies_wort(); int suche_wort(char* adresse_von_wort); int neues_wort(char* adresse_von_wort); int trennzeichen(int zeichen); char* woerterbuch[MAXWOERTER]; int wortnummer = 0; int main() { int i; int adresse_von_wort=0; printf("Unterschiedliche Woerter zaehlen\n"); printf("Eingabe beenden mit \"RETURN\"\n"); while ((adresse_von_wort = lies_wort()) != -1) { if (adresse_von_wort) { if (!suche_wort((char*)adresse_von_wort)) neues_wort((char*) adresse_von_wort); } } /* wörterbuch ausgeben */ printf("\nAnzahl unterschiedlicher Woerter: %i\n",wortnummer); for (i=0;i<wortnummer;i++) printf("Woerterbuch[%i]: %s \n",i,woerterbuch[i]); return (0); } int lies_wort() { char* zeichen_von_wort; char* wort = zeichen_von_wort; int lim = MAXWORD; int zeichen, t; int adresse_von_wort; if (trennzeichen(zeichen = *zeichen_von_wort++ = getch()) != TRENNZEICHEN) { if (zeichen == '\n') return (-1); *zeichen_von_wort = '\0'; return(0); } while (--lim > 0) { t = trennzeichen(zeichen= *zeichen_von_wort++ = getch()); if (t != TRENNZEICHEN) { ungetch(zeichen); break; } } *(zeichen_von_wort-1) = '\0'; adresse_von_wort = (int) malloc(strlen(wort)+1); strcpy(((char *)adresse_von_wort), wort); return(adresse_von_wort); } int suche_wort(char* adresse_von_wort) { int i=0; for(i=0;i<wortnummer;i++) if (!strcmp(adresse_von_wort, woerterbuch[i])) return (1); return (0); } int neues_wort(char* adresse_von_wort) { woerterbuch[wortnummer++] = adresse_von_wort; return (0); } int trennzeichen(int zeichen) { switch (zeichen) { case '.' : ; case ',' : ; case ';' : ; case ' ' : ; case '\n' : return (zeichen); break; default : return (TRENNZEICHEN); } }
-
1. Bitte code-Tags auch wieder zumachen, so kanns ja keiner Lesen
2. was funktioniert denn nicht? (Fehlermeldungen beim Compilieren etc. bitte posten)
3. das scheint reiner C-Code zu sein, eigentlich wuerde das ins C-Forum gehoeren
-
Hi,
ich bekomme folgenden Fehler:error C3861: 'malloc': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
Gruß Stefan
-
swagner3 schrieb:
error C3861: 'malloc': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
#include <stdlib.h>
vergessen?
-
habe mal #include <stdlib.h>
einegbunden.
Jetzt bekomme ich folgenden Fehler: Run-Time Check Failure #3 - The variable 'zeichen_von_wort' is being used without being defined.Gruß Stefan
-
habs jetzt nur mal überflogen.
meinst du das wirklich so?:
char* zeichen_von_wort; char* wort = zeichen_von_wort;
einen zeiger auf einen leeren zeiger?
-
swagner3 schrieb:
Jetzt bekomme ich folgenden Fehler: Run-Time Check Failure #3 - The variable 'zeichen_von_wort' is being used without being defined.
das liegt wohl daran:
int lies_wort() { char* zeichen_von_wort; char* wort = zeichen_von_wort; ...
'zeichen_von_wort' hat keinen bestimmten wert. musste irgendwie initialisieren
-
Wie kann ich denn zeichen_von_wort initialisieren.
Oder wie kann ich das besser loesen?Gruß Stefan
-
char zeichen_von_wort; char* wort = zeichen_von_wort;
-
enno-tyrant schrieb:
char zeichen_von_wort; char* wort = zeichen_von_wort;
das beisst sich aber mit dem rest vom code. da ist noch mehr faul
-
Das funzt auch nicht.
Gruß Stefan
-
Ist noch jemand da ?
Gruß Stefan
-
swagner3 schrieb:
Wie kann ich denn zeichen_von_wort initialisieren.
Ausreichend Speicher reservieren?
Und überarbeite nochmal deinen Code, so Sachen wie
if (trennzeichen(zeichen = *zeichen_von_wort++ = getch()) != TRENNZEICHEN)
sind nicht gerade toll.
-
Hat keiner ne Lösung für mein Problem ?
Gruß Stefan :p
-
Neu schreiben bzw. den Code ueberarbeiten waer mein Tipp
-
Wie kann ich denn ausreichend Speicher reservieren ?
Gruß Stefan
-
in C mit malloc, in C++ mit new[]
-
-
Leider nein, von malloc hab ich keine Ahnung... bin purer C++'ler
BTW: ich unterstell dir jetzt einfach mal, dass du den Code, den du gepostet hast, selbst gar nicht verstehst. Du solltest vielleicht erstmal versuchen, den Code soweit zu verstehen, dass du ihn auch eigenstaendig aendern kannst. Wir helfen Anfaengern gerne, aber ich hab irgendwie den Eindruck, als ob du dich da an etwas rangewagt hast, dass "zu gross" fuer dich ist... (Disclaimer: soll keine Beleidigung sein, ist nur mein persoenlicher Eindruck)
-
so wie ich das sehe soll 'zeichen_von_wort' ein vom user eingegebener buchstabe sein.
das initialisiere es so:
char zeichen_von_wort = getch();
//edit aber wie die anderen schon erwähnten: überarbeite den _gesamten_ code; sonst kommst du aus dem fragen nicht mehr raus