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