C - Nie mogę odczytać pliku

Mam taki problem mam taki kod

void wyswietl_projekt() {

  char plik[40];

  printf("Podaj nazwe projektu, ktory chcesz wyswietlic\n");

  scanf("%s",plik);

    if ( !strstr(plik,".") ) {

    strcat(plik,".txt");

    }

  FILE *file;

  char uchwyt[255];

  if (file = fopen(plik,"r") != NULL) {

      while ( fgets(uchwyt,255,file) != EOF) {

    printf("%s",uchwyt);


      }


  }

  else {

  printf("Nie ma takiego projektu\nZacznijmy wszystko od nowa\n"); 

  wyswietl_projekt();

  }



}

No i jak ma już przejść do wyświetlania zawartości pliku to jest komunikat naruszenie ochrony pamięci.

Czyli według mnie przepełnienie bufora, ale przecież czasem nawet małe pliki próbowałem odczytać i nieszło.

EOF -1, NULL 0 fget wraz z końcem pliku zwraca NULL :wink:

Ja w ogóle wątpię, że to działa. Operator porównania (także z negacją) ma mniejszy priorytet niż przypisanie. Więc ten if będzie zachowywać się dość nieprzewidywalnie. Prawdopodobnym scenariuszem true zostanie zrzutowane na 1, false na 0, ale tak czy inaczej te adresy będą zastrzeżone i nastąpi segfault.