Hallo C Freunde !
Ich habe da ein kleines Problem: Ich möchte gerne einen Sring über die Console einlesen das ganze in Array speichern und dann einen bestimmten Buchstaben der ebenfalls über die Konsole eingelesen wird suchen und ausgeben wie oft diers im Text vorkommt.
Habe das auch teilweise gelöst habe folgendes gemacht:
So nun zwei Probleme:
1. Der String soll ja beliebig lang sein aber wie mache ich das den fgets erwartet ja eine Länge von mir ? deshalb ist er im moment noch mit maxlaeng begrenzt
2. Wenn ich free benutze wird meine Console mit Fehlermeldungen überflutet:
*** glibc detected *** ./a.out: free(): invalid next size (fast): 0x0844d008 ***
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6(+0x6b591)[0xb76ff591]
/lib/tls/i686/cmov/libc.so.6(+0x6cde[0xb7700de8]
/lib/tls/i686/cmov/libc.so.6(cfree+0x6d)[0xb7703ecd]
./a.out[0x8048615]
/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe6)[0xb76aabd6]
./a.out[0x80484a1]
======= Memory map: ========
aber warum wenn ich speicher mit malloc allokiere muss ich diesen doch wieder mit free() Freigeben ?
Danke im Vorraus für eure Hilfe!
Ich habe da ein kleines Problem: Ich möchte gerne einen Sring über die Console einlesen das ganze in Array speichern und dann einen bestimmten Buchstaben der ebenfalls über die Konsole eingelesen wird suchen und ausgeben wie oft diers im Text vorkommt.
Habe das auch teilweise gelöst habe folgendes gemacht:
Code:
#include <stdio.h>
#include <stdlib.h>
#define maxleng 200
int zaelen(char* arr, char letter)
{
int i=0;
int count=0;
while(arr[i]!= '\0')
{
if(letter== arr[i])
{
count++;
}
i++;
}
return count;
}
int main (void)
{
char* eingabe=(char*)malloc(sizeof(char));
char b= ' ';
printf("Bitte geben Sie einen Text ein!\n");
fgets(eingabe,maxleng,stdin);
printf("Bitte geben Sie den zu suchenden Buchstaben ein\n");
scanf("%c",&b);
printf("%i\n",zaelen(eingabe, b));
free(eingabe);
return 0;
}
1. Der String soll ja beliebig lang sein aber wie mache ich das den fgets erwartet ja eine Länge von mir ? deshalb ist er im moment noch mit maxlaeng begrenzt
2. Wenn ich free benutze wird meine Console mit Fehlermeldungen überflutet:
*** glibc detected *** ./a.out: free(): invalid next size (fast): 0x0844d008 ***
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6(+0x6b591)[0xb76ff591]
/lib/tls/i686/cmov/libc.so.6(+0x6cde[0xb7700de8]
/lib/tls/i686/cmov/libc.so.6(cfree+0x6d)[0xb7703ecd]
./a.out[0x8048615]
/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe6)[0xb76aabd6]
./a.out[0x80484a1]
======= Memory map: ========
aber warum wenn ich speicher mit malloc allokiere muss ich diesen doch wieder mit free() Freigeben ?
Danke im Vorraus für eure Hilfe!