Proszę o wytłumaczenie mi w jaki sposób w zapisywać adresy wskaźników w tablicy wskaźników?
Mam stringa i szukam w nim znaku, adresy ich wystąpień muszę zapisać w tablicy wskaźników.
Napisałem taki oto prototyp;
char *funkc(char *string, char znak, char *tabadresow[]);
Wszystkie moje próby pisania tej funkcji kończą się wywaleniem programu.
Z góry dziękuje!
0
0
Wrzuć tutaj jakąś swoją próbę, to będzie można coś więcej powiedzieć. Mam zgadywać jakie błędy popełniasz? ;)
0
wypadałoby mimo wszystko przedstawić jakąś próbę, nawet wywalającą…
no ale niech ci będzie:
#include <stdio.h>
#include <string.h>
/* mała zmiana: funkcja zwraca ilość znaków znalezionych, oraz pobiera dodatkowo rozmiar tablicy tabadresow */
int funkc(char *string, char znak, char* tabadresow[], int rozmiar_tablicy)
{
int i;
for (i=0; i<rozmiar_tablicy && *string!='\0'; string++)
if (*string == znak)
tabadresow[i++] = string;
return i;
}
char napis[256];
char* adresy[256];
int main()
{
int ile;
int i;
strncpy(napis,"ala ma kota",256);
printf("%s\n",napis);
ile = funkc(napis,'a',adresy,256);
printf("znaleziono znaków: %d\n",ile);
for (i=0;i<ile;i++)
*adresy[i] = 'e';
printf("%s\n",napis);
return 0;
}
0
#include <stdio.h>
#include <stdlib.h>
char *strchrall(char *str, char c, char *tabOfPtr2c[]);
int main(int argc, char *argv[])
{
char stry[]="ala ma kota";
char *adresy[10];
char znak='a';
strchrall(stry,znak,adresy);
system("PAUSE");
return 0;
}
char *strchrall(char *str, char c, char *tabOfPtr2c[])
{
int zlicz=0;
while(*str!='\0')
{
if(*str==c)
{
*tabOfPtr2c=&str;
tabOfPtr2c++;
zlicz++;
}
str++; //nastepny element
}
if(zlicz==0)
return NULL;
else
return tabOfPtr2c;
}
Coś takiego, program już się kompiluje, jednak funkcja ma zapisywać adresy wystąpień znaku w tablicy i funkcja zwraca wskaźnik do pierwszego znalezionego
znaku.