Форум программистов, компьютерный форум CyberForum.ru

Как сделать так, что если файл существует return true, если нет - return false - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 5.00
ReDFoX43.rus
0 / 0 / 0
Регистрация: 13.05.2011
Сообщений: 43
04.09.2011, 11:48     Как сделать так, что если файл существует return true, если нет - return false #1
Здравствуйте, я новичок в программировании.
Мой вопрос очень прост: как сделать так, что если файл существует return true если нет return false
Я сделал вот так:
C++
1
2
3
4
5
6
7
8
9
    char acc[128];
    str_format(acc, sizeof(acc), "accounts/%s.acc", name);
    FILE* accfile;
        if (accfile = fopen (acc, "a+")) 
        {
             fclose(accfile);
             return true;
        }
        return false;
Но оно всегда посылает return true; как я понял ?
Где моя ошибка? И можно ли реализовать мою идею вот так просто ??
Пожалуйста не посылайте меня на поиск, потому что я уже искал часа 2 но ничего не нашел
Нашел правда вот как
C++
1
2
    ifstream f(acc);
    return f.good();
Но ifstream необъявленный идентификатор, хотя я подключил
#include <fstream>
#include <istream>
#include <iostream>
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.09.2011, 11:48     Как сделать так, что если файл существует return true, если нет - return false
Посмотрите здесь:

C++ В чем разница между return и return false/true
C++ While4°. Дано целое число N (> 0). Если оно является степенью числа 3, то вывести true, если не является — вывести false.
C++ Если число - куб натурального числа то возвращать true, иначе false
Переменной k логического типа присвоить значение true в том случае, если массив n целых чисел упорядочен по возрастанию, i значение false если нет C++
Дано целое число N(>0). Если оно является степенью числа 3, то вывести TRUE, если не является-вывести FALSE. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
04.09.2011, 11:52     Как сделать так, что если файл существует return true, если нет - return false #2
Ничего не понял.
Дайте полный код. И вообще, зачем вам fstream, если у вас код на си.
C
1
if (accfile = fopen (acc, "a+"))
Если создавать с режимом а+, то, если файл не существует, то он появится.
ReDFoX43.rus
0 / 0 / 0
Регистрация: 13.05.2011
Сообщений: 43
04.09.2011, 11:56  [ТС]     Как сделать так, что если файл существует return true, если нет - return false #3
Вобщем вот полный код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
bool PLAYER_ACCOUNT::exists(char *name)
{
    char acc[128];
    str_format(acc, sizeof(acc), "accounts/%s.acc", name);
    FILE* accfile;
    if (accfile = fopen (acc, "a+")) 
    {
        fclose(accfile);
        return true;
    }
    return false;
}
Я знаю что код на си, но игра сделана на С++ к которой относится этот код (игра не моя. онлайн игра, поэтому делаю свой мод для сервера)
В прошлой версии игры все было на си, а код я скопировал именно оттуда

Смысл: если есть файл return true; если его нету return false;
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
04.09.2011, 11:59     Как сделать так, что если файл существует return true, если нет - return false #4
Открывайте с режимом "r", тогда файл не будет создаваться, и, если он не существует, вернется нулевой указатель.
ReDFoX43.rus
0 / 0 / 0
Регистрация: 13.05.2011
Сообщений: 43
04.09.2011, 12:01  [ТС]     Как сделать так, что если файл существует return true, если нет - return false #5
А с каким режимом тогда создавать ?

Добавлено через 46 секунд
Спасибо
Простите что я задавал вопросы после ваших ответов, просто интернет не очень хороший =)
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
04.09.2011, 12:45     Как сделать так, что если файл существует return true, если нет - return false #6
Есть функция access() из библиотеки <io.h>, которая проверяет присутствует ли файл на диске, то есть можно файл и вовсе не открывать.

Можно прописать такую функцию
C
1
2
3
4
5
#include<io.h>
int file_exists(char *filename)
 {
   return (access(filename, 0) == 0);
 }
и проверять, например if (file_exists("a.txt"))

Цитата Сообщение от diagon Посмотреть сообщение
Открывайте с режимом "r", тогда файл не будет создаваться, и, если он не существует, вернется нулевой указатель.
Диск может быть защищен от чтения и записи, тогда fopen() вернет ошибку, а файл тем не менее существует.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
04.09.2011, 12:46     Как сделать так, что если файл существует return true, если нет - return false #7
Цитата Сообщение от Thinker Посмотреть сообщение
Диск может быть защищен от чтения и записи, тогда fopen() вернет ошибку, а файл тем не менее существует.
Но сделать-то с ним ничего нельзя =)

Цитата Сообщение от Thinker Посмотреть сообщение
Есть функция access() из библиотеки <io.h>
Это какая-то нестандартная библиотека? gcc такой не знает.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
04.09.2011, 12:56     Как сделать так, что если файл существует return true, если нет - return false #8
Цитата Сообщение от diagon Посмотреть сообщение
Но сделать-то с ним ничего нельзя =)
Да, но просто может нужна простая проверка на существование.

Цитата Сообщение от diagon Посмотреть сообщение
Это какая-то нестандартная библиотека? gcc такой не знает.
Возможно, тогда нужны другие методы.
ReDFoX43.rus
0 / 0 / 0
Регистрация: 13.05.2011
Сообщений: 43
04.09.2011, 13:37  [ТС]     Как сделать так, что если файл существует return true, если нет - return false #9
Цитата Сообщение от Thinker Посмотреть сообщение
Да, но просто может нужна простая проверка на существование.


Возможно, тогда нужны другие методы.
Да, вы правы. Нужна просто проверка на существование
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.09.2011, 14:02     Как сделать так, что если файл существует return true, если нет - return false
Еще ссылки по теме:

C++ Куда отправляет return ,если при команде ничего прописано?
Как открыть файл на чтение и запись, создав его, если его не существует, и перезаписать, если он существует? C++
C++ Если число является простым, то функция возвращает true, если не является false

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
04.09.2011, 14:02     Как сделать так, что если файл существует return true, если нет - return false #10
Если есть буст, то можно так. Но если к файлу нет доступа - не уверен. У меня работает вроде, особо тестить лень.
C++
1
2
3
namespace fs = boost::filesystem;
if (fs::exists( fs::path("123.txt") )
  //файл существует
Yandex
Объявления
04.09.2011, 14:02     Как сделать так, что если файл существует return true, если нет - return false
Ответ Создать тему
Опции темы

Текущее время: 01:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru