Wyswietlanie napisu

0

Witam mam problem z wyświetleniem napisu pobieranego z pliku przez program.Czy ktoś byłby w stanie wskazać mi co robię nie tak, że wyświetlają mi się "krzaczki" ?? Napisałem taki mały programik, który oddaje mój problem w trochę większym projekcie. Z góry dziękuję za wszelką pomoc. Program jest pisany w języku C.

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>

typedef struct Struktura
{
    char*slowo;

}Struktura;

void WyswietlStrukture(Struktura*struktura)
{
    printf("%s", struktura->slowo);
    return;
}

void UtworzStrukture(Struktura**struktura,char*noweslowo)
{
    (*struktura) = malloc(sizeof(Struktura));
    (*struktura)->slowo = noweslowo;
    return;
}

void OdtworzStruktureZPliku(Struktura**struktura)
{
    FILE*plik;

    if ((fopen_s(&plik, "Dane.txt", "r")) != 0)
        return;

    char slowo[50];

    fscanf_s(plik, "%s", slowo, _countof(slowo));
    UtworzStrukture(&(*struktura), slowo);
    fclose(plik);
    return;
}

int main()
{
    Struktura*struktura = NULL;

    OdtworzStruktureZPliku(&struktura);
    WyswietlStrukture(struktura);

    _getch();
    return 0;
}
1
char slowo[50];

/* ... */

UtworzStrukture(&(*struktura), slowo);

Do funkcji UtworzStrukture przekazujesz wskaźnik na zmienną lokalną, która przestaje istnieć tuż po wywołaniu funkcji OdtworzStruktureZPliku.

Musiałbyś zrobić np.:

char *slowo = malloc(51);

/* ... */

UtworzStrukture(/* ... */);

... i nie zapomnieć potem o odpowiednim free!

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