Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 13.05.2011
Сообщений: 43

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

04.09.2011, 11:48. Показов 4222. Ответов 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>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.09.2011, 11:48
Ответы с готовыми решениями:

Что такое в jquery и java return false и return true
Если я правильно понимаю, то return false отменяет действие по умолчанию, например клик по ссылке, а return true это наоборот приводит в...

Что это isOk(int s),setAge(int g){if(isOk(g){age=g;return true;}else{.;return false;}}.getName(){return name;}?
package com.company; import java.io.Serializable; public class person implements Serializable { protected String name; ...

В чем разница между return и return false/true
Привет всем. Вот подскажите плиз) return; return false; return true; расскажите пожалуйста об етих операторах.. чем они...

9
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
04.09.2011, 11:52
Ничего не понял.
Дайте полный код. И вообще, зачем вам fstream, если у вас код на си.
C
1
if (accfile = fopen (acc, "a+"))
Если создавать с режимом а+, то, если файл не существует, то он появится.
0
0 / 0 / 0
Регистрация: 13.05.2011
Сообщений: 43
04.09.2011, 11:56  [ТС]
Вобщем вот полный код:
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;
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
04.09.2011, 11:59
Открывайте с режимом "r", тогда файл не будет создаваться, и, если он не существует, вернется нулевой указатель.
0
0 / 0 / 0
Регистрация: 13.05.2011
Сообщений: 43
04.09.2011, 12:01  [ТС]
А с каким режимом тогда создавать ?

Добавлено через 46 секунд
Спасибо
Простите что я задавал вопросы после ваших ответов, просто интернет не очень хороший =)
0
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
04.09.2011, 12:45
Есть функция 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() вернет ошибку, а файл тем не менее существует.
1
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
04.09.2011, 12:46
Цитата Сообщение от Thinker Посмотреть сообщение
Диск может быть защищен от чтения и записи, тогда fopen() вернет ошибку, а файл тем не менее существует.
Но сделать-то с ним ничего нельзя =)

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

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


Возможно, тогда нужны другие методы.
Да, вы правы. Нужна просто проверка на существование
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
04.09.2011, 14:02
Если есть буст, то можно так. Но если к файлу нет доступа - не уверен. У меня работает вроде, особо тестить лень.
C++
1
2
3
namespace fs = boost::filesystem;
if (fs::exists( fs::path("123.txt") )
  //файл существует
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.09.2011, 14:02
Помогаю со студенческими работами здесь

Если число является степенью числа 3, то вывести True, если нет, то False
Дано целое число N (&gt; 0). Если оно есть степенью числа 3, то вывести TRUE, если нет, то False Помогите пж

Сравнивать числа из 1 и 2 столбца и если совпадают, то пишется true, а если нет, то false
помогите, пожалуйста, исправить код так чтобы сравнивались числа из 1 и 2 столбца и если совпадают, то пишется true, а если нет, то false ...

Если в наборе имеется числа меньше к, то вывести true, если нет - false
1) n&gt;0 .Найти сумму n*n+(n+2)*(n+2)+...+(2*n)*(2*n) 2)n&gt;1.Вывести наименьшее из целых чисел k,для которого сумма 1+2+3+...+ k будет...

Дано целое число N>0, если оно является степенью числа 3 то вывести TRUE, если нет - FALSE
Дано целое число N&gt;0, если оно является степенью числа 3 то вывести TRUE, если нет - FALSE

Написать метод который возвращает true если хоть где-то в массиве идут три числа в порядке возрастания, false если нет
Написать метод который возвращает true если хоть где-то в массиве идут три числа в порядке возрастания, false если нет public static...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru