C: Wie kann ich ein Pointer-Array anlegen, um die Fundstellen zu speichern?
/* 24_02 dynamische Speicherverwaltung
demonstriert realloc
ZUR BEACHTUNG: Dies ist ein reines Demo-Programm!
Speicher-Reallokation in 10-Byte-Blöcken ist in der Praxis nicht sinnvoll!
Speicherallokation und insbesondere Speicher-Reallokation kosten erhebliche System-Resourcen!
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define STRLEN 10
int Such(char* strPtr, char* Ptr2);
int main()
{
int n = 1;
char* strPtr = (char*)malloc(n * STRLEN); // kleinen Speicherblock anfordern
char* strPtr2 = (char*)malloc(n * STRLEN); // kleinen Speicherblock anfordern
printf("Bitte Text eingeben: \n");
fgets(strPtr, STRLEN, stdin); // einlesen
printf("\n");
while (strPtr[strlen(strPtr) - 1] != '\n') // Ende erreicht, letztes Zeichen '\n'?
{
n++; // Anzahl Blöcke inkrementieren
strPtr = (char*)realloc(strPtr, n * STRLEN); // größeren Speicher anfordern: n Blöcke
fgets(strPtr + strlen(strPtr), STRLEN + 1, stdin); // weiter einlesen, terminierende 0 überschreiben, STRLEN + 1 Byte stehen zur Verfügung
}
printf("Nach welcher Zeichenfolge soll gesucht werden?\n");
fgets(strPtr2, STRLEN, stdin); // einlesen
printf("\n");
while (strPtr2[strlen(strPtr2) - 1] != '\n') // Ende erreicht, letztes Zeichen '\n'?
{
n++; // Anzahl Blöcke inkrementieren
strPtr2 = (char*)realloc(strPtr2, n * STRLEN); // größeren Speicher anfordern: n Blöcke
fgets(strPtr2 + strlen(strPtr2), STRLEN + 1, stdin); // weiter einlesen, terminierende 0 überschreiben, STRLEN + 1 Byte stehen zur Verfügung
}
printf("Zeichenfolge wurde %i mal gefunden\n", Such(strPtr, strPtr2));
return 0;
}
int Such(char* strPtr, char* strPtr2)
{
int n = 0;
int p = 0;
int sip = 0;
int ltext = strlen(strPtr) - 1;
int lzfolge = strlen(strPtr2) - 1;
int lgteilt = ltext / lzfolge;
char* ptrarr[] = { NULL };
while ((lgteilt) > 0)
{
for (int i = 0; i < lzfolge; i++)
{
if (strPtr[p] == strPtr2[i])
{
sip++;
}
p++;
}
lgteilt--;
}
return (sip / lzfolge);
}
Ich verstehe leider nicht ganz, wie man ein Pointer-Array anlegen soll, um die Fundstellen zu speichern.
Ich habe zwar eine Schleife, aber diese kann z. B. "yay" nicht mit "ay" vergleichen.
Danke für die Hilfe.
