Dziwne znaki wczytywane z końca pliku

0

Moje pytanie jest następujące, dlaczego kiedy wyświetlam dane wczytane z pliku, to po ich wyświetleniu pojawiają się dziwne znaki o wartości -3, -35? Oczywiście sprawdzone poprzez wyświetlenie inta jako chara. Z problemem sobie poradziłem, natomiast zastanawiam się dlaczego wczytuje mi do tablicy te nieszczęsne znaki. Dzięki za odpowiedź z góry.

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

int main(){
	FILE *fp;
	long size;
	char *tekst;

	if((fp=fopen("lab1.txt", "r"))==NULL){fputs("Blad otwarcia pliku", stderr);exit(1);}
	fseek(fp, 0, 2);
	size=ftell(fp);
	rewind(fp);
	tekst = (char *)malloc(sizeof(*tekst)*size);
	if(tekst==NULL) {fputs("Blad dostepu do pamieci", stderr);exit(2);}


	if((fread(tekst, 1, size, fp))!=size){fputs("Blad czytania", stderr);exit(3);}
	puts(tekst);

	fclose(fp);
	free(tekst);

	system("pause");
	return 0;
} 
3

Wczytuje poprawnie, tylko nie masz null terminatora na końcu stringa tekst, więc, powodując przy okazji UB, wypisujesz śmieci z pamięci gdzieś dalej. Zaalokuj size+1 znaków, i ustaw tekst[size] = '\0';

0

Bardzo fajnie wyjaśnione dzięki za pomoc ;)

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