Zapisanie przy pomocji funkcji fprintf ciągu znaków do pliku binarnego

0

Cześć, mam za zadanie zapisać przy pomocy funkcji fprintf, jak wspomniałam w temacie ciągu znaków do pliku binarnego i tekstowego. Z plikiem tekstowym nie było problemów gorzej już z plikiem binarnym. Zadanie mam wykonać dla ciągu zawierającego przynajmniej jeden symbol nowej linii. Problem polega na tym, że w pliku binarnym w ogóle nie czyta mi końca linii. Czy mógłby ktoś jakoś pomóc. Dopiero uczę się programować więc proszę o wyrozumiałość, każda sugestia będzie bardzo mile widziana.
Mój kod poniżej:

void zad4()
{
	FILE *zapis_tekstowy; 
	char ciag_znakow[] = "Aleksandra ola\n Pies kot \n mucha\n";
	if ((zapis_tekstowy = fopen("tekst.txt", "w")) == NULL) 
	{
		printf("Nie mogę otworzyć pliku do zapisu!\n");
		exit(1);
	}
	fprintf(zapis_tekstowy, "%s",ciag_znakow); 
	fclose(zapis_tekstowy); 
	
	
	FILE *zapis_binarny = fopen("binarny.bin", "wb");
	if (zapis_binarny == NULL)
	{
		printf("Nie ma takiego pliku");
		return;
	}
	fprintf(zapis_binarny, "%s",ciag_znakow );
	
	fclose(zapis_binarny);
}

Próbowałam przechodzić także po całej tablicy i pobierać znaki ale to również się nie sprawdziło.

0

Problem polega na tym, że w pliku binarnym w ogóle nie czyta mi końca linii.

W pliku binarnym nie występuje pojęcie końca linii - plik binarny trzyma surowe dane.

1

Na temat odpowiadaj w postach ;-)

Hmm czyli ten kod, który ja napisałam jest dobry i nie da się go jakoś zmodyfikować aby móc odczytać koniec linii, gdyż on nie występuje tak?

Tak, dokładnie: plik binarny zawiera dane binarne, a plik tekstowy - tekst.
W tekście wyróżnia się linie, a w danych binarnych - nie.

0
Patryk27 napisał(a):

Tak, dokładnie: plik binarny zawiera dane binarne, a plik tekstowy - tekst.
W tekście wyróżnia się linie, a w danych binarnych - nie.

I wszystko jasne, bardzo dziękuję za odpowiedź! :)

3

Tyle, że oba pliki zawierają dane binarne. Różnica jest w interpretacji zawartości - ascii vs dane binarne. Przykładowo w trybie tekstowym na windowsie jako koniec linii wstawi 2 bajty: \r\n, a na uniksach jeden \n . zapisując binarnie podany przez autora ciąg będzie tylko \n.

4

ja dodam, że zapisywanie danych binarnych za pomocą fprintf jest bezsensu, bo fprintf obsługuje tylko tekst.
Do zapisu danych binarnych służy funkcja fwrite.

0
MarekR22 napisał(a):

ja dodam, że zapisywanie danych binarnych za pomocą fprintf jest bezsensu, bo fprintf obsługuje tylko tekst.
Do zapisu danych binarnych służy funkcja fwrite.

bardzo dziękuję za komentarz! niestety tak zostało skonstruowane polecenie do zadania i niestety musiałam użyć funkcji fprintf :(

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