Sprawdzanie czy dany plik tekstowy jest w folderze

0

Witam, mam zadanie w którym mam napisać program odczytujący wszystkie znaki wybranego przez użytkownika pliku tekstowego. Pierwszą rzeczą którą chce zrobić to sprawdzanie czy plik tekstowy istnieje a ciężko dokopać jest mi się do jakichś konkretnych materiałów na ten temat.

Czy może ktoś mi pomóc z tym kodem ?

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


main()
{
    char fname[10];
    int check=0;

    printf("Podaj nazwe pliku wraz z rozszerzeniem:\n");
    scanf("%s",&fname);
    printf("\n%s",fname);
    FILE *plik;
    if(plik=fopen(fname,"r"))
    {
        fclose(fname);
        check=1;
        printf("%i",check);
        system("PAUSE");

    }

    else
    {
        printf("\nNie ma takego pliku !!! \n");
        system("PAUSE");
    }




    return 0;
}


0

A jaki jest konkretnie problem? Sprawdzi czy plik istnieje można na kilka sposobów, np. tak jak Twoim kodzie sprawdzając co zwróci fopen. Chcesz znać inne sposoby na sprawdzenie czy plik istnieje?

0

Chodzi o to że ten kod nie działa, zawsze zwraca mi że nie istnieje ; /

0

scanf("%s",&fname); => scanf("%s",fname);
fclose(fname); => fclose(plik);

0

Po pierwsze tablica char fname[10]; jest trochę za krótka jak na bufor z nazwą pliku + ewentualnie pełną ścieżka. Druga sprawa, jak zamykasz plik to nie podajesz do funkcji fclose nazwy pliku tylko wskażnik FILE.

Próbowałeś podawać pełną ścieżkę do pliku? Czy plik jest w tym samym katalogu z którego uruchomiłeś program?

EDIT: A @Delor znalazł kluczowy problem.

0

Dalej wyskakuje ze nie ma takiego pliku ;/
Nie próbowałem podawać ścieżki pliku ale plik jest w tym samym katalogu więc nie powinien ;/

poprawiony kod:

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


main()
{
    char fname[10];
    int check=0;

    printf("Podaj nazwe pliku wraz z rozszerzeniem:\n");
    scanf("%s",fname);
    printf("\n%s",fname);
    FILE *plik;
    if(plik=fopen(fname,"r"))
    {
        fclose(plik);
        check=1;
        printf("%i",check);
        system("PAUSE");

    }

    else
    {
        printf("\nNie ma takego pliku !!! \n");
        system("PAUSE");
    }




    return 0;
}


0

Podepnij debugger - będziesz wiedział co się dzieje. Spróbuj również z pełną ścieżką.

0

Szczerze mówiąc dopiero sie ucze i nie uzywałem nigdy debugger`a . Z podaną ścieżką też nie działa ;/ nie wiem w czym może tkwić problem

0
FILE *plik=fopen(("%s",fname) ,"r");
    if(plik==NULL)
0

Twoje rozwiązanie odpowiada temu:

FILE *plik=fopen(fname ,"r");
if(plik==NULL)

czyli jest równoważne temu:

FILE *plik;
if(plik=fopen(fname,"r")==NULL)

Oryginalnie miałeś:

FILE *plik;
if(plik=fopen(fname,"r"))

co odpowiada:

FILE *plik;
if(plik=fopen(fname,"r")!=NULL)

Zanegowałeś tylko warunek.
Błędy miałeś w innych miejscach.

Swoją drogą ("%s",fname) jako argument fopen zaciemnia tylko kod. Wartość po lewej nic nie zrobi a do funkcji przekazana zostanie tylko wartość po prawej stronie przecinka.

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