fgets
помещает конец строки в конец строки (\ r \ n в Windows). Таким образом, ваш filePath содержит мусор в конце, и файл с таким именем не существует. Я бы рекомендовал использовать scanf("%[^\r\n]s", filePath)
вместо этого. (scanf
может отличаться в некоторых реализациях, пожалуйста, прочтите вашу документацию.)
обновление: Вы также должны убедиться, что не будет переполнения буфера, указав размер буфера. Например, так:
char filePath[100];
scanf("%99[^\r\n]s", filePath);