Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Quadrillionaire
13 / 13 / 1
Регистрация: 09.03.2013
Сообщений: 180
#1

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

07.06.2013, 08:32. Просмотров 417. Ответов 8
Метки нет (Все метки)

Добро всем утро! Надеюсь хоть у кого-то оно доброе=) Помогите пжл с программой(написать либо подправить). Задача следующая:
"Создать текстовый файл и напечатать в нем не менее пяти строк (можно на английском), включающих буквы, цифры и т.д. Программно пронумеровать каждую строку."
То есть имеется ввиду, создать файл, в котором мы сами печатаем данные символы.
Я написал программу, вроде бы все правильно, но она либо вообще ничего не печатает, либо при печати выводит "крякозябры", либо вообще сплошняком выводятся заглавные буквы Н.
Вот сам код:
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;
}
Заранее благодарю=)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2013, 08:32
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Не записывает ничего в файл (C++):

Не записывает в файл
Здравствуйте! Сделал сортировку,но почему то не записывается в файл. Сам код:...

Не записывает в файл
Доброго времени суток. Написал код, который должен открывать файл, находить в...

Не записывает в файл
писал на visual studio, надо переделать на dev. товарищи, помогите. какая-то...

Не записывает в файл
#include &quot;stdafx.h&quot; #include &lt;list&gt; #include &lt;conio.h&gt; #include &lt;iostream&gt;...

не записывает в файл
суть - записать из 3-х файлов в 1 и обратно #define _CRT_SECURE_NO_WARNINGS...

Не записывает в файл
посмотрите и исправьте ошибку в коде #include &lt;stdio.h&gt; #include...

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

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

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

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

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

проще открыть исходный файл только для чтения("r"), создать новый файл("w"), в него писать прочитанные строки исходного, а так же вписывать номера строк.
потом подменить исходный файл новым.
Хорошо, попробуй, спасибо за совет=)
0
MrGluck
Модератор
Эксперт CЭксперт С++
8024 / 4867 / 1425
Регистрация: 29.11.2010
Сообщений: 13,253
07.06.2013, 14:46 #7
Quadrillionaire, по поводу кракозябр - зря закомментировали установку консоли в кодироку 1251, без неё так и будете их получать. И еще: свойства консоли > шрифт > Lucida Console.

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

Почему cout, но не ofstream? Неужели оперировать потоками не приятно?
Так cout разве не является потоковым выводом? Можете ссылку дать, на информацию о ofstream? Просто только начинаю изучать с++)
0
MrGluck
Модератор
Эксперт CЭксперт С++
8024 / 4867 / 1425
Регистрация: 29.11.2010
Сообщений: 13,253
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() а можно и не делать, программа сделает это сама
}
1
07.06.2013, 15:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2013, 15:00
Привет! Вот еще темы с решениями:

Не записывает в файл?
Не записывает результат преобразования в файл, пожалуйста помогите! #include...

Записывает в файл не по условию
Вот код одной из функций основной программы,я не понимаю,почему в файл...

Не записывает структуру в файл
Здравствуйте, вот собственно код: struct mystruct { double i; char color;...

В файл не записывает массив
Добрый вечер. Есть двумерный строковый массив размером 10x80. При в воде...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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