Array ein und ausgabe



  • ich bin dabei ein array über die konsole zu füllen, and das gefüllte array soll auch ausgegeben werden nur weis ich nicht genau wie ich das anstellen muss. im moment wird nur die letze eingabe ausgegeben..

    #include "stdafx.h"
    #include <stdio.h>
    #include <stdlib.h>// Bibliothek für malloc()
    
    // Wörter die in das Wörterbuch neu aufgenommen werden
    char neues_wort(char str[])
    {
    	// Ausgabe des gefüllten Arrays
    	printf("Ihre Eingabe war: %s", str);
    
    	getchar();
    
    	return 0;
    }
    
    // Funktion, die ein eingelesenes Wort im Wörterbuch sucht. Wird das
    // Wort nicht gefunden erfolgt ein Aufruf der Funktion neues_wort()
    char suche_wort(char str[])
    {
    	neues_wort(str);
    
    	return 0;
    }
    
    // Funktion, die die Eingabe zeichenweise einliest und als Ergebnis einen
    // Zeiger auf das erkannte Wort an das Programm zurückliefert
    char lies_wort()
    {
    	unsigned short i;
    	char str[1000]; // Maximal 1000 Einträge für dieses Feld
    	char* pStr = NULL; // no memory allocation
    	pStr = (char*) malloc(1000);
    
    	// Einlesen der Wörter
    	//printf("Eingabe: ");
    	//gets(str);
    
    	// Folgende Regel soll gelten: Bedingung wird beendet, solange
    	// kein "." "," oder ein ";" bzw. "(mehrere) Leerzeichen" eingegeben werden
    				// noch nicht fertig...
    	for(i = 1; i <= 3; i++)
    	{
    		// Einlesen der Wörter
    		printf("Eingabe: ");
    		gets(str);
    	}
    
    	// Aufruf der Funktion suche_wort();, mit variablen (Array) übergabe
    	suche_wort(str);
    
    	return 0;
    }
    
    int main()
    {
    	printf("Woerterbuch\n\n");
    
    	// Aufruf der Funktion lies_wort();
    	lies_wort();
    
    	return 0;
    }
    

    bitte nur erklären, wie das mit dem array geht, da ich die übungsaufgabe selber lösen möchte. 😃



  • Du bringst die Datentypen etwas durcheinander.
    char c ist für ein einzelnes Zeichen da.
    char a[x] ist ein Feld für x Zeichen. Damit werden in C Strings (mehrere zusammenhängende Zeichen) gebildet. Dabei muss man noch das abschliesssende '\0' beachten.

    Wenn du schreibst:

    // Funktion, die die Eingabe zeichenweise einliest und als Ergebnis einen
    // Zeiger auf das erkannte Wort an das Programm zurückliefert
    char lies_wort()
    

    passt das nicht zusammen, da die Funktion nur eine char zurückliefert. Ausserdem hast du in dem Code danach nur ein return 0; Also nix mit Zeichen oder Zeiger.
    gets() liest auch Zeilenweise ein. Zudem ist es unsicher, da es zu einem Buffer-Overflow kommen kann wenn du zuviel Daten eingibst. Nimm fgets(str,999,stdin)

    Wenn du mehr Strings/Wörter behandeln willst und schon mit malloc rumspielst, dann meinst du sicher ein char *p[x] : Ein Feld mit x Zeigern auf Zeichen/Strings.

    Bevor ich jetzt noch weiter rum rate: Was willst du machen. Am besten mit Beispiel.


Anmelden zum Antworten