fopen nie otwiera pliku

0
#define DLUGOSC_STRINGA 1000
#define DLUGOSC_SCIEZKI_DO_PLIKU 100

void czytaj_z_pliku(void){
    char sciezka[DLUGOSC_SCIEZKI_DO_PLIKU];
    char linia[DLUGOSC_STRINGA];
    FILE *plik;
 
    printf("Podaj nazwe pliku (max 100 znakow)\n");
    scanf("%s", sciezka);
    plik = fopen(sciezka, "r");
 
    if (plik == NULL){
        printf("Otwarcie pliku nie powiodlo sie, sprobuj jeszcze raz\n");
        return;
    }
    else{
    	while(1){
    		if(sleep_p1 > 0)continue;
        	while(fgets(linia, DLUGOSC_STRINGA,plik) != NULL){
        		if(sleep_p1 > 0)break;
        		linia[strlen(linia)-1] = '\0';
         		zapisz_do_kolejki(1, linia);
         		printf("linia:%s\n", linia);
         		sleep(1);
			}
			if(warunek_petli_p1 < 0)break;
			if(sleep_p1 < 0) break;
		}
		
    }
        fclose(plik);   
}

Dlaczego cały czas po wpisaniu nazwy istniejącego pliku, wyświetlany jest komunikat że "Otwarcie pliku się nie powiodło"?

0

Musisz wpisać razem z rozszerzeniem czyli np: "plik.txt"

0

Możliwe jest że roboczym folderem nie jest ten folder w którym znajduje się program. Spróbuj wpisać razem ze ścieżką.

0
mikroice90 napisał(a)
    plik = fopen(sciezka, "r");
 
    if (plik == NULL){
        printf("Otwarcie pliku nie powiodlo sie, sprobuj jeszcze raz\n");
        return;
    }

Dlaczego cały czas po wpisaniu nazwy istniejącego pliku, wyświetlany jest komunikat że "Otwarcie pliku się nie powiodło"?

"""RETURN VALUE
Upon successful completion, fopen() shall return a pointer to the object controlling the stream. Otherwise, a null pointer shall be returned, and errno
shall be set to indicate the error."""

Gdybyś poprawnie obsłużył błąd, wiedziałbyś dlaczego nie możesz otworzyć pliku.

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