Plik tekstowy, kopia

0

Hejka mam takie zadanko, stworzyłem pliki na pulpicie a mimo to wyświetla mi "Błąd otwierania pliku". Czemu tak jest??

/*Dany jest plik tekstowy, o nazwie "dane.txt", zawierający liczby rzeczywiste. Napisz funkcję kopiującą zawartość tego pliku do nowego (tekstowego) pliku "wyniki.dat", ale z pominięciem liczb ujemnych*/
#include <stdio.h>


void PrzepiszDodatnie(char *nazwa_pliku)
{
	FILE *dane=fopen(nazwa_pliku, "rt");
	
	FILE *wynik=fopen("wynik.dat", "wt");
	
	if(dane)
	{
		double liczba;
		
		while(fscanf(dane, "%lf", &liczba)==1)
			
			if(liczba>=0)
				
				fprintf(wynik, "%lf", liczba);
			
			fclose(dane);
			fclose(wynik);
			
	}
	else
	{
		printf("Blad otwierania pliku!");
	}
	
}

int main()
{
       char nazwa_pliku[]="dane.txt";
       
       PrzepiszDodatnie(nazwa_pliku);
       
       return 0;
}
1

A w jakim katalogu roboczym odpalasz program? Zapewne to jest problemem.

1

Gdzie uruchamiasz program?
Z reguły pliki podane bez pełnej (bezwzględnej) ścieżki są szukane w bieżącym katalogu - w przypadku uruchomionych programów jest to katalog, z którego został uruchomiony.
Część IDE uruchamia automatycznie z głównego katalogu projektu. Jak totalnie nie jesteś w stanie się dowiedzieć, jaki to katalog u Ciebie, możesz go wypisać w programie za pomocą funkcji getcwd getcwd(3): current working directory - Linux man page.
Druga rzecz: jesteś w stanie dowiedzieć się jakiego rodzaju błąd się pojawił - jeśli fopen zwraca NULL, to ustawia również zmienną errno. Jej wartość wskazuje typ błędu, np. "Nie ma takiego pliku lub katalogu" albo niewystarczające uprawnienia do operacji na pliku.

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