STRCPY - probelem z kopiowaniem

0

Witam,

program sie wywala przy poniższej linijce :

strcpy((tab[i].nazwa), buffer); 

Podejrzewam że może byc zły przydział pamięci . Dziękuje za pomoc z góry.

#include <stdio.h>
#include <stdlib.h> //malloc, free, sprintf
#include <time.h> //srand, rand
#include <string.h> //strcpy

typedef struct Dane Dane;
struct Dane
{
    float wartosc;
    char nazwa[10];
};

//funkcja wypisuje cala tablice wartosci, w jednym wierszu wypisuje 10 liczb
void wypiszTablice(Dane *tablica, const int wt)
{
int i = 0; //iterator petli

    for(i = 0; i < wt; ++i)
    {
        if(i % 10 == 0) printf("\n");
        printf("%f", tablica[i].wartosc);
    }
}


int main()
{
int wielkoscTablicy;
Dane *tab =(Dane*) malloc(wielkoscTablicy * sizeof(Dane));
int i; //iterator petli for
char buffer[20]; //buffor ktory przechowuje przeknwertowana wartosc z int na string
float tmp; //zawiera zmienna losowa typu float
srand(time(NULL));


    //wypelnienie tablicy danymi
    for(i = 0; i < 3; ++i)
    {
        printf("Tu jestem1 \n");
        sprintf(buffer, "%i", i);
        puts(buffer);
        strcpy((tab[i].nazwa), buffer);
        printf("Tu jestem3\n");
        printf("%s",tab[i].nazwa);
        tmp = 23.46;
 //     printf("%f",tmp);
//      tab[i].wartosc = tmp;
//      printf("%f", tab[i].wartosc);
    }
//    wypiszTablice(tab, 3);


free(tab);
return 0;
}

dodanie znacznika <code class="c"> - fp

0

Twoja zmienna wielkoscTablicy nie jest zainicjalizowana przed malloc. Mogą się dziać różne rzeczy.

0

Tak na pierwszy rzut oka:

int wielkoscTablicy;
Dane *tab =(Dane*) malloc(wielkoscTablicy * sizeof(Dane));

Jaką według Ciebie wartość ma zmienna wielkoscTablicy w momencie wywołania malloc?

0

Sorry poprawiłem

printf("Podaj wielkosc tablicy\n");
    scanf("%d", &wielkoscTablicy);
    tab =(Dane*) malloc(wielkoscTablicy * sizeof(Dane));
    //wypelnienie tablicy danymi
    for(i = 0; i < 3; ++i)

a wczesniej było

printf("Podaj wielkosc tablicy\n");
    scanf("%d", &wielkoscTablicy);
    //wypelnienie tablicy danymi
    for(i = 0; i < 3; ++i)

tylko wyskasowałem przez przypadek :-p
thx za pomoc.

dodanie znaczników <code class="c"> - fp

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