Run-Time Check Failure #3 - The variable 'zeichen_von_wort' is being used without being initialized.
-
Der folgende Prgrammcode soll ein Wörterbuch darstellen. Funktionsweise: es werden Wörter eingelesen und anschließen soll verglichen werden, ob das eingegebene Wort schon im Speicher vorhanden ist oder noch aufgenommen wird. Und wenn sonderzeichen wie z.B. . , ; etc eingegeben wird, soll das Programm beendet werden..
Nun zur Fehlermeldung unter Visual Studio 2010 bekommen ich immer diese Fehler Meldung "Run-Time Check Failure #3 - The variable 'zeichen_von_wort' is being used without being initialized." in der Funktion int lies_wort(); aber egal wie ich die initialisiere es funktioniert nicht so richtig bei mir..
#include "stdafx.h" #include <stdio.h> #include <string.h> #include <stdlib.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]); getchar(); 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); } }
-
char* zeichen_von_wort; // welchen Wert hat zeichen_von_wort hier? char* wort = zeichen_von_wort; // welchen Wert bekommt demnach wort? ... if (trennzeichen(zeichen = *zeichen_von_wort++ = getch()) != TRENNZEICHEN) // Wo kommt dann der Wert für zeichen her?
int lies_wort() { int adresse_von_wort; ... adresse_von_wort = (int) malloc(strlen(wort) + 1); // MÜLL strcpy(((char *)adresse_von_wort), wort); // MÜLL return(adresse_von_wort); }
Warum ist das kein
char *lies_wort()
Ein Pointer ist kein Integer
Mehr habe ich nicht nachgesehen.