einzelne character zu einem String zusammenfügen

Davicito

Erfahrenes Mitglied
Hallo,

ich hab da mal wieder eine Frage an die Experten. in dem folgendem Beispiel möchte ich einzelne Charakter nacheinander zu einem String zusammenfügen. Leider klappt das bei mir nicht.

Java:
#include <stdlib.h>

#include <stdio.h>

#include <string.h>

char buffer[SIZE];

FILE *file1, *file2;	// Eingabe- und Ausgabe-File

char* wort = "";
...
while((c = fgetc(file1)) != EOF)
{
        if((c >= 48 && c<= 57) || (c >= 65 && c <= 90) || (c >= 97 && c <= 122))
	{
			//wort = (char*) c;
			//strcpy(wort, (char*) c); 
	}
         printf("Wort: %s\n",wort);
}

mit strcpy komme ich nicht weiter. Die String.h Referenz gibt nicht mehr her. Habt ihr noch eine idee, wie sich das realisieren lässt?
 
Hi

wort hat keinen Speicher.
Bzw. nur 2 Byte. Das reicht nicht lang.
Leg also zuerst mal ein ordentlich großes wort an.

Dann...mit der Schleife wirst du am Ende in dein "wort" die ganze Datei einlesen, jedoch nur die Ziffern und Buchstaben daraus. Trotzdem die ganze Datei, nicht nur ein Wort.
Ist das beabsichtigt?

Das letzte printf sollte durch puts ausgetauscht werden.
Das printf gehört außerdem aus der Schleife raus.

Und die Zwei (zurzeit auskommentierten) Zeilen in der Schleife sind Unsinn.

Mach zuerst außerhalb der Schleife ein int, zB. zaehler.
Setz ihn auf 0.
Statt der zwei Kommentarzeilen machst du dann
C++:
wort[zaehler++] = c;
Nach der Schleife, vor dem printf machst du dann noch ein
C++:
wort[zaehler] = '\0';
zum Abschluss.

Was noch fehlt: Überprüfen, ob wort eventuell zu klein wird.

Gruß
 
Hi danke erstmal für die schnelle antwort.
in "wort" wir tatsächlich eine komplette datei eingelesen - wobei die Datei nur sehr klein ist (4 Zeilen). Aber es sollen nachher noch mit zusatzfunktionen die wörter nach und nach in dem String "wort" erscheinen. ich wollte erstmal wisse, wie ich überhaupt gefilterte Zeichen in einem String bekomme.
 
Ja danke es funktioniert... hatte aber eher gehoft, dass es mit einer art buffer (string) auch funktionieren würde.

Danke
 
Java:
char wort[500] = "";
int zeilen = 1;

int spalten = 1;
int i = 0;

while((c = fgetc(file1)) != EOF)

{
		if(c == '\n')
		{
			zeilen++;
			spalten = 1;
		}
		if((c >= 48 && c<= 57) || (c >= 65 && c <= 90) || (c >= 97 && c <= 122))
		{
			wort[i] = c;
			printf("%c",wort[i]); 
		}
		else
		{ 
			for(int i=0;i <= 500; i++) wort[i] = " ";  //Feld löschen
			

		}
							
		spalten++;
			

}
 
So wirklich gelesen hast du meinen Anweisungsbeitrag aber nicht, oder?
Außerdem darf das nicht mal kompilieren.
 
wieso? ich meine nur printf mit puts auszutauschen, macht mir jetzt kein so richtigen sinn.
Oder ich habe puts nicht verstanden
 
Zurück