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.