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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 5.00
ReDFoX43.rus
0 / 0 / 0
Регистрация: 13.05.2011
Сообщений: 43
#1

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

04.09.2011, 11:48. Просмотров 1461. Ответов 9
Метки нет (Все метки)

Здравствуйте, я новичок в программировании.
Мой вопрос очень прост: как сделать так, что если файл существует 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
Посмотрите здесь:

Если число является простым, то функция возвращает true, если не является false - C++
Напишите функцию, получающую целое число N(&gt;0). Если оно является простым, то функция возвращает true, если не является false. #include...

Куда отправляет return ,если при команде ничего прописано? - C++
куда отправляет return ,если при команде ничего прописано?

Дано целое число N(>0). Если оно является степенью числа 3, то вывести TRUE, если не является-вывести FALSE. - C++
Дано целое число N(&gt;0). Если оно является степенью числа 3, то вывести TRUE, если не является-вывести FALSE. Я не могу записать её с...

Как сделать так , чтобы если все 3 условия не выполняются , то вывести что то - C++
Задача на проверку : &quot;принадлежат ли числа к &quot; . Написал по одному , что принадлежит , что не принадлежит . А как сделать так , чтобы если...

Если число - куб натурального числа то возвращать true, иначе false - C++
Из задачника. Если данное число n - куб натурального числа то возвращать true,или же false; То есть если n=27 и 27=3^3 то t=true ...

Как сделать так, чтобы файл вывода менялся, если изменится имя библиотеки (DLL)? - C++
Есть библиотека с именем example.dll Как сделать так, чтобы файл вывода менялся, если изменится имя библиотеки? В main с такой...

Вывести на консоль true, если точка принадлежит заданным областям, и false - в противном случае - C++
Составить программу которая печатает true если точка с координатами (x,y) принадлежит заданным закрашенным (заштрихованным) областям и...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
1927 / 1193 / 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
1927 / 1193 / 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++
4221 / 2195 / 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
1927 / 1193 / 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++
4221 / 2195 / 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++
Всем привет! Что будет если применить такую конструкцию int global; void Test(const int&amp; a) { global = a; } То...

Программа, печатающая значение true, если указанное высказывание является истинным, и false в противном случае - C++
Составить программу,печатующую значение true,если указанное высказывание является истинным,и false -в противном случаею. Величина z...

Описать функцию, возвращающую true, если натуральное число является простым, и false в противном случае - C++
Надо написать программу на c++ Описать функцию, возвращающую true, если натуральное число является простым, и false в противном случае. С...

Вывести "return 0" если введенное значение равно -1 - C++
Вывести return 0 если в вводе есть -1 ,но есть одно но. я ввожу 3 элемента так while(cin&gt;&gt;time&gt;mission&gt;&gt;status) и вот такой тест 3 E...

Написать функцию, которая возвращает true, если параметр является алфавитно-цифровым и false в ином случае. - C++
Нужно написать функцию, которая возвращает истину, если переданный параметр является алфавитно - цифровым и ложь, если не является. (не...


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

Или воспользуйтесь поиском по форуму:
diagon
Higher
1927 / 1193 / 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
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru