Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Quadrillionaire
13 / 13 / 1
Регистрация: 09.03.2013
Сообщений: 180
#1

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

07.06.2013, 08:32. Просмотров 382. Ответов 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++):

Не записывает в файл - C++
писал на visual studio, надо переделать на dev. товарищи, помогите. какая-то фигня с fаpp #include &lt;iostream&gt; #include &lt;cstdlib&gt; ...

Не записывает в файл - C++
посмотрите и исправьте ошибку в коде #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; double f(double uu,double vv)...

Не записывает в файл? - C++
Не записывает результат преобразования в файл, пожалуйста помогите! #include &lt;stdio.h&gt;//Подключение библиотеки стандартного...

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

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

не записывает в файл - C++
суть - записать из 3-х файлов в 1 и обратно #define _CRT_SECURE_NO_WARNINGS #include &quot;stdafx.h&quot; #include &quot;conio.h&quot; #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
1084 / 582 / 21
Регистрация: 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Эксперт С++
7491 / 4606 / 692
Регистрация: 29.11.2010
Сообщений: 12,596
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Эксперт С++
7491 / 4606 / 692
Регистрация: 29.11.2010
Сообщений: 12,596
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
Привет! Вот еще темы с ответами:

Не записывает в файл - C++
Здравствуйте! Сделал сортировку,но почему то не записывается в файл. Сам код: #include&lt;iostream&gt; #include&lt;fstream&gt; using...

Неправильно записывает в файл - C++
Здравствуйте. Столкнулся с проблемой, что алгоритм хеширования md5, который находит программа, должна записать в файл, но когда я открываю...

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

Не записывает структуру в файл - C++
Здравствуйте, вот собственно код: struct mystruct { double i; char color; char material; }; int main(int argc, char*...


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

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

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