Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/12: Рейтинг темы: голосов - 12, средняя оценка - 4.83
 Аватар для Мысщъ
0 / 0 / 0
Регистрация: 25.02.2007
Сообщений: 37

Проблемы при работе с файлами

29.07.2008, 08:55. Показов 2672. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
доброго времени!
возник у меня маленький трабл при работе с файлами. Причем совершенно не могу понять причину. Код такой:
C++
1
2
3
4
5
6
7
8
9
10
11
12
int file_read_func(const char* file_name)
{
           char ch;
    fstream file;
           file.open(file_name, ios::out);
    while (!file.eof())
    {
        file >> ch;
        cout << ch;
    }
    return 0;
};
компилируется нормально, всё ОК. а когда при выполнении доходит до file.open(file_name, ios::out); выдает сообщение:
Debug Assertation Failed!
Program: <путь к проге>
File:mbstowcs.c
Line:69

Expression: s != NULL

потом советует обратиться к документации. Документации у меня нет, потому и полез сюда
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.07.2008, 08:55
Ответы с готовыми решениями:

Ошибка при работе с файлами
Необходимо, создать текстовый файл со случайным именем в диапазоне 8 символов, латиница. Вот код: int main() { ...

Ошибка при работе с файлами
Всем привет! Подккажите, плиз, что у меня неправильно в коде: #include &lt;cstdlib&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; ...

Обработка исключений при работе с файлами
Кто может помочь с обработкой исключений для файла? Нужно чтобы обработчик перехватывал исключение и предлагал ввести путь к файлу заново....

8
 Аватар для mikityak
617 / 22 / 0
Регистрация: 30.09.2007
Сообщений: 357
29.07.2008, 11:23
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// 333.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include "fstream.h"
 
int file_read_func(const char* file_name)
{
           char ch;
    fstream file;
           file.open(file_name, ios::out);
    while (!file.eof())
    {
        file >> ch;
        cout << ch;
    }
    return 0;
};
 
int main(int argc, char* argv[])
{
    file_read_func("001.txt");
    return 0;
}
тет ошыпки ?
0
 Аватар для Мысщъ
0 / 0 / 0
Регистрация: 25.02.2007
Сообщений: 37
30.07.2008, 14:38  [ТС]
если явно задаю имя файла, т.е. прописываю его в вызове функции, то ошибки нет, а вот если я передаю имя файла в переменной - есть :-(
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
30.07.2008, 14:54
надеюсь, Вы адрес переменной в функцию передаете?
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
30.07.2008, 15:18
ошибку дает, когда пишешь так:
C++
1
2
3
4
5
6
int main(int argc, char* argv[])
{
   char* text = "001.txt";
   file_read_func(text);
   return 0;
}
а еще вопрос - ты читать собираешься или писать в файл? из названия функции - вроде бы читать, но файл открыт в режиме записи в файл... не понятно как-то
0
 Аватар для Мысщъ
0 / 0 / 0
Регистрация: 25.02.2007
Сообщений: 37
30.07.2008, 17:58  [ТС]
видимо, без приведения полнго кода не обойтись...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include "stdafx.h"
#include <fstream>
#include <iostream>
#include <string>
#include <stdio.h>
#include <stdlib.h>
 
using namespace std;
 
int file_read_func(char* file_name)
{
    char ch;
    int eof;
    fstream file;
           file.open(file_name, ios::in);
    file.seekg(ios::end);
    eof=file.tellg();
    file.seekg(ios::beg);
    for (int i=0; i!=eof; i++)
    {
        file.seekg(i);
        cout << file.tellg();
        file.get(ch);
        cout << ch << "\n";
    }
    return 0;
};
 
int file_write_func(char* file_name)
{
    cout << "You are writting to file!\n";
    return 0;
};
 
int main(int argc, char *argv[])
{
    char arg1;
    /*switch (argc)
    {
    case 2:
        cout << "Not enought arguments!\n";
        break;
    case 3:
        if (argv[1][1]=='o')
            {  
                file_read_func(argv[3]);
            }
        if (argv[1][1]=='r')
            { 
                file_write_func(argv[3]); 
            }
        else
        {
            cout << "Invalid argument!\n";
        }
        break;
    default:
        cout << "Too much arguments!\n";
        break;
    }*/
    file_read_func("test.txt");
    cin >> arg1;
    return 0;
}
ну и в общем и целом ситуация нынче такая - если вызываю функцию явно, как сейчас - то все отноительно нормально работает, за исключением того, что во-первых, если прописать полный путь к файлу (файл существует), на прмер file_read_func("g:\test.txt"), то почему-то eof=-1, т.е. он ведет себя так, будто файла нет! с существующими ситуация не лучше = воспринял токльно первые два символа тестового файла.
если раскомменировать основную часть, т.е. заменить вызов file_read_func("test.txt") на file_read_func(argv[3]), то собственно опять натыкаемся на ту самую ошибку, с которой я сюда и пришел...
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
30.07.2008, 18:07
путь выглядеть должен так - file_read_func("g:\\test.txt"), и еще бы проверить неплохо, а есть ли у тебя третий параметр, который ты передаешь в функцию...
а тебе обязательно именно через fstream организовывать чтение, есть менее замороченные способы, могу пример подкинуть, чтобы ты не мучался... а еще покажи пример вызова программы с параметрами...
0
 Аватар для Мысщъ
0 / 0 / 0
Регистрация: 25.02.2007
Сообщений: 37
30.07.2008, 18:17  [ТС]
2WooDooMan666
вот в том-то и дело что argv[3] у меня нет... я уже знаю, кто я и все исправил. только вот проблему с тем, что воспринимается только 2 первых символа это не решило
хм... несколько не понял замороченности работы с потоками (признаюсь честно - вообще пока фигово разбираюсь), но если будет более удобный способ - то буду только благодарен
сейчас у меня прописаны в Configuration properties -> Debugging -> command arguments: -o g:\test.txt
когда пошагово прогоняю программу, то отслеживаю значения argv[], там все ок, т.е. argv[0]=путь к программе, argv[1]="-o", argv[2]="g:\test.txt"
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
30.07.2008, 18:23
ИМХО, через функции fopen, fclose, fgets, fputs - проще чтение реализуется... а на счет двух символов, я твою прогу тестил (первый вариант), читает нормально весь файл, зачем ты в этом месте код поменял...
C++
1
2
3
4
5
    while (!file.eof()) 
    { 
        file >> ch; 
        cout << ch; 
    }
- этого вполне достаточно...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.07.2008, 18:23
Помогаю со студенческими работами здесь

Искажение данных при работе с файлами
Всем привет! Столкнулся с такой проблемой при работе с файлами: Например есть файл со следующим содержимым: После записи его строк в...

Флаги при работе с бинарными файлами
Всем привет! Ребята, не могу понять почему у меня удаляются данные из файла. Мне необходимо создать файл и потом в него дописывать...

Ошибка на этапе исполнения при работе с файлами
Здравствуйте, писал прогу по работе с файлами и структурами, наткнулся на такую траблу. После работы программы по введению ФИО, телефона и...

Список запрещенных слов при работе с файлами
Здравствуйте, уважаемые форумчане! Работаю над проектом по проверке кодов решений для задач, отправляемых через редактор кода на сайте....

Проблемы при работе с шейдэрами
пытаюсь написать шейдер, простейший. вот код его описания const char* Vertex_Shader_Descrip = &quot;#version 330/n&quot; ...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Ниже машинный перевод статьи The Thinkpad X220 Tablet is the best budget school laptop period . Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы,. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru