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

Не записывает ничего в файл - C++

Восстановить пароль Регистрация
 
Quadrillionaire
13 / 13 / 1
Регистрация: 09.03.2013
Сообщений: 180
07.06.2013, 08:32     Не записывает ничего в файл #1
Добро всем утро! Надеюсь хоть у кого-то оно доброе=) Помогите пжл с программой(написать либо подправить). Задача следующая:
"Создать текстовый файл и напечатать в нем не менее пяти строк (можно на английском), включающих буквы, цифры и т.д. Программно пронумеровать каждую строку."
То есть имеется ввиду, создать файл, в котором мы сами печатаем данные символы.
Я написал программу, вроде бы все правильно, но она либо вообще ничего не печатает, либо при печати выводит "крякозябры", либо вообще сплошняком выводятся заглавные буквы Н.
Вот сам код:
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
#include <iostream>
#include <locale>
#include <io.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
using namespace std;
 
int main(){
    //SetConsoleCP(1251);
    //SetConsoleOutputCP(1251);
    setlocale (LC_ALL,"Russian");
    int str=1;
    char ch;
    FILE *x;
    cout<<"Открытие файла";
    while((x=fopen("C:\\izmeni-menya.txt","r+"))==NULL)
        cout << "Ошибка открытия файла, вставьте файл izmeni-menya.txt\n в корневую директорию диска C\n";
    rewind(x);
    while(!feof(x)){
        ch=getc(x);
        if (ch == '\n'){
        fprintf(x,"%d",str);
        str++;
        }
    };
    
    cout <<"\nРедактирование прошло успешно!";
    fclose(x);
 
return 0;
}
Заранее благодарю=)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2013, 08:32     Не записывает ничего в файл
Посмотрите здесь:

C++ Не записывает в файл
C++ Не записывает в файл
C++ Не записывает в файл
C++ Не записывает структуру в файл
C++ не записывает в файл
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ITDeveloper
 Аватар для ITDeveloper
85 / 85 / 5
Регистрация: 14.01.2011
Сообщений: 263
07.06.2013, 08:40     Не записывает ничего в файл #2
В 17 строчке все таки наверно if вместо while
Quadrillionaire
13 / 13 / 1
Регистрация: 09.03.2013
Сообщений: 180
07.06.2013, 08:45  [ТС]     Не записывает ничего в файл #3
Цитата Сообщение от ITDeveloper Посмотреть сообщение
В 17 строчке все таки наверно if вместо while
Без результата.. Программа открывает файл и даже выполняется цикл по поиску последней строки...но вот никаких изменений нету..как был файл сам по себе..так и остается=(
ITDeveloper
 Аватар для ITDeveloper
85 / 85 / 5
Регистрация: 14.01.2011
Сообщений: 263
07.06.2013, 11:56     Не записывает ничего в файл #4
В вашем случае открывается текстовый файл, в котором нет признака конца файл. А запись в файл произойдет только в случае корректного его закрытия!

Добавлено через 51 секунду
Т.е. после выполнения условия feof, которое никогда не наступает!
AntonChik
1083 / 581 / 21
Регистрация: 11.11.2008
Сообщений: 1,544
07.06.2013, 12:31     Не записывает ничего в файл #5
Цитата Сообщение от ITDeveloper Посмотреть сообщение
В вашем случае открывается текстовый файл, в котором нет признака конца файл.
как это отражено в коде?

так просто писать в середину не получится... легко получится только дописывать в конец.

проще открыть исходный файл только для чтения("r"), создать новый файл("w"), в него писать прочитанные строки исходного, а так же вписывать номера строк.
потом подменить исходный файл новым.
Quadrillionaire
13 / 13 / 1
Регистрация: 09.03.2013
Сообщений: 180
07.06.2013, 14:41  [ТС]     Не записывает ничего в файл #6
Цитата Сообщение от AntonChik Посмотреть сообщение
как это отражено в коде?

так просто писать в середину не получится... легко получится только дописывать в конец.

проще открыть исходный файл только для чтения("r"), создать новый файл("w"), в него писать прочитанные строки исходного, а так же вписывать номера строк.
потом подменить исходный файл новым.
Хорошо, попробуй, спасибо за совет=)
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
07.06.2013, 14:46     Не записывает ничего в файл #7
Quadrillionaire, по поводу кракозябр - зря закомментировали установку консоли в кодироку 1251, без неё так и будете их получать. И еще: свойства консоли > шрифт > Lucida Console.

Почему cout, но не ofstream? Неужели оперировать потоками не приятно?
Quadrillionaire
13 / 13 / 1
Регистрация: 09.03.2013
Сообщений: 180
07.06.2013, 14:51  [ТС]     Не записывает ничего в файл #8
Цитата Сообщение от MrGluck Посмотреть сообщение
Quadrillionaire, по поводу кракозябр - зря закомментировали установку консоли в кодироку 1251, без неё так и будете их получать. И еще: свойства консоли > шрифт > Lucida Console.

Почему cout, но не ofstream? Неужели оперировать потоками не приятно?
Так cout разве не является потоковым выводом? Можете ссылку дать, на информацию о ofstream? Просто только начинаю изучать с++)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2013, 15:00     Не записывает ничего в файл
Еще ссылки по теме:

C++ В файл не записывает массив
Не записывает в файл? C++
Не записывает в файл C++

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

Или воспользуйтесь поиском по форуму:
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
07.06.2013, 15:00     Не записывает ничего в файл #9
Quadrillionaire, cout как раз с ним опперирует, его собрат - ofstream

http://www.cplusplus.com/reference/fstream/ofstream/

Пример работы с файлами:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <fstream>
 
int main()
{
    std::ifstream ifs("test.txt"); // создаеим объект для считывания с файла
    if (!ifs) // если не удалось создать
        return 1; // возвращаем 1 (код ошибки). Можно также добавить вывод сообщения об отсутствии файла
    const int size = 5; // размер массива
    int x[size];
    for (int i=0; i < size; i++) // считываем данные
        ifs >> x[i];
    ifs.close(); // закрываем поток на считывание с файла
 
    std::ofstream o("test.txt"); // создаеим объект для записи в файл
    for (int i=0; i < size; i++) // записываем данные
        o << ++x[i] << ' ';
    // можно написать o.close() а можно и не делать, программа сделает это сама
}
Yandex
Объявления
07.06.2013, 15:00     Не записывает ничего в файл
Ответ Создать тему
Опции темы

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