Dynamiczna alokacja pamięci C

0

Dobry wieczór,

 #include <stdio.h>
#include <string.h>
int ffname(char *line)
{
    int i=1,j=0;
    char *sign;
    // char name[1024];
    char *name;
    strtok(line,"(");
    sign = strchr(line,' ');
    if(sign[i] == '*')
    {
        i++;
    }
    name = (char*) malloc(i * sizeof(char));
    while(sign[i] != '\0')
    {
        name[j]=sign[i];
        i++;
        j++;
    }
    name[j] ='\0';
    printf("Function name is: %s\n", name);
    return name;
}

int main(int argc, char **argv)
{
    int j;
    char* inputname;
    char* outputname;

    for(j=0; j<argc ; j++)
    {

        if(strcmp(argv[j],"-i") == 0)
        {
            inputname=argv[j+1];
        }
        else if(strcmp(argv[j],"-o") == 0)
        {
            outputname=argv[j+1];
        }
    }

    if(argc == 5)
    {
        int i,count =0;
        char c[1024],b[1024];
        FILE *in;
        FILE *out;
        in = fopen(inputname,"r");
        out = fopen(outputname, "wt");

        while(fgets(c,sizeof(c),in))
        {
            for(i=0; i<strlen(c); i++)
            {
                while( c[i] =='\t' || c[i] == ' ')
                {
                    i++;
                }
                if( c[i] == '{')
                {
                    count++;
                    if(count == 1)
                    {
                        fputs(ffname(b),out);
                    }
                    break;
                }
                else if( c[i] == '}')
                {
                    count--;
                    break;
                }
            }
            strcpy(b,c);
        }
    }
    else
    {
        printf("error");
    }
    return 0;
}

Ogółem program ma rozpoznawać(z plików .c) nazwy funkcji, zmiennych z ich typami itp, jak na razie udało mi się coś wykombinować z funkcjami. Nie wiem natomiast, jak dynamicznie alokować pamięć, oczywiście nie znam rozmiaru tablicy jakiej będę potrzebować do każdego pliku i tu się zatrzymałem. Próbowałem napisać coś w funkcji ffname ( nie wiem czy jest to poprawne), a pozostają jeszcze dwie tablice :/

0

1) deklarujesz, że zwracasz int, a zwracasz wskaźnik
2) gubisz wskaźnik na zaalokowana pamięć, więc jak chcesz, ją później zwolnić?
3) może napisz po kolei co chcesz uzyskać daną operacją - to uwaga dla początkujących, bo czasami nawet fragment kodu może byc poprawny, ale będzie działał inaczej niz to sobie wyobrażasz...

0

O dynamicznej alokacji pamięci możesz poczytać np. tu: WIKIBOOKS: Dynamiczna alokacja pamięci
Przykład zastosowania malloc: WIKIBOOKS: C/malloc

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0