SetConsoleCP(1251);
SetConsoleOutputCP(1251);
const int Bukvi = 1000000;
char Slovo[Bukvi];
string Path;
string Name;
fstream fs;
ofstream of;
cout << ("Введите путь куда вы хотите создать файл: ");
cin >> Path;
cout << ("Введите название файла с расширеннием: ");
cin >> Name;
of.open (Path + "/" + Name, ofstream::app);
if (! of.is _open())
{
cout << ("Ошибка! Файл не был создан. \n \n");
cout << ("Код ошибки: 00001\n\n\n\n\n");
}
else
{
cout << ("Файл создан в: " + Path + "/" + Name + "\n\n");
for (int lol = 0; lol < 5; lol++)
{
cout << ("Введите что вы хотите вписать в файл: ");
cin.getline(Slovo, Bukvi);
of << (Slovo);
of << ("\n");
}
}
тоесть он выводит Введите что вы хотели вписать два раза
C/C++
Почему цикл for срабатывает 2 раза? Код в вопросе
потому что в цикле, сколько раз цикл пройдется, столько и выведется
Евгений Якушин
Вы не правильно поняли

Потому, что совмещение в коде ввода через cin >> и ввода через cin.getline приводит к странным последствиям.
Можешь всё вводить через cin.getline, можешь перед циклом выполнить сброс буфера ввода (cin.ignore).
Можешь всё вводить через cin.getline, можешь перед циклом выполнить сброс буфера ввода (cin.ignore).
Евгений Якушин
Оу, спасибо! Я поменял все cin'ы на cin.getline и все и в правду стало нормально работать!
не знаю с++ но по ощущениям там какой то оператор в теле цикла - после надписи - можно выполнять только один раз. А при попытке выполнить второй раз цикл прерывается.
Евгений Якушин
Да не, он как нужно работает только 5 раз, проблема на фото

Перед
cin.getline(Slovo, Bukvi);
надо прочистить cin
cin.clear();
fflush(stdin);
То есть вот так:
cout << ("Введите что вы хотите вписать в файл: ");
cin.clear();
fflush(stdin);
cin.getline(Slovo, Bukvi);
Полный код для mingw (проверено на msys2):
#include <iostream>
#include <locale>
#include <codecvt>
#include <string>
#include <stdexcept>
#include <vector>
#include <fstream>
#include <sys/stat.h>
#include <windows.h>
using namespace std;
int main(int argc, char *argv[])
{
setlocale(LC_ALL, "Russian");
const int Bukvi = 1000000;
char Slovo[Bukvi];
string Path;
string Name;
fstream fs;
ofstream of;
cout << ("Введите путь куда вы хотите создать файл: ");
cin >> Path;
cout << ("Введите название файла с расширеннием: ");
cin >> Name;
of.open (Path + "/" + Name, ofstream::app);
if (! of.is_open())
{
cout << ("Ошибка! Файл не был создан. \n \n");
cout << ("Код ошибки: 00001\n\n\n\n\n");
}
else
{
cout << ("Файл создан в: " + Path + "/" + Name + "\n\n");
for (int lol = 0; lol < 5; lol++)
{
cout << ("Введите что вы хотите вписать в файл: ");
cin.clear();
fflush(stdin);
cin.getline(Slovo, Bukvi);
of << (Slovo);
of << ("\n");
}
}
return 0;
}
Компиляция через строку так:
g++ 1.cpp -DUNICODE -lopengl32 -LC:/msys32/mingw32/lib -lmingw32 -lmingw32 -ldxerr8 -ldinput8 -lshell32 -lsetupapi -ladvapi32 -luuid -lversion -loleaut32 -lole32 -limm32 -lwinmm -lgdi32 -luser32 -lm -Wl,--no-undefined -pipe -lmingw32
cin.getline(Slovo, Bukvi);
надо прочистить cin
cin.clear();
fflush(stdin);
То есть вот так:
cout << ("Введите что вы хотите вписать в файл: ");
cin.clear();
fflush(stdin);
cin.getline(Slovo, Bukvi);
Полный код для mingw (проверено на msys2):
#include <iostream>
#include <locale>
#include <codecvt>
#include <string>
#include <stdexcept>
#include <vector>
#include <fstream>
#include <sys/stat.h>
#include <windows.h>
using namespace std;
int main(int argc, char *argv[])
{
setlocale(LC_ALL, "Russian");
const int Bukvi = 1000000;
char Slovo[Bukvi];
string Path;
string Name;
fstream fs;
ofstream of;
cout << ("Введите путь куда вы хотите создать файл: ");
cin >> Path;
cout << ("Введите название файла с расширеннием: ");
cin >> Name;
of.open (Path + "/" + Name, ofstream::app);
if (! of.is_open())
{
cout << ("Ошибка! Файл не был создан. \n \n");
cout << ("Код ошибки: 00001\n\n\n\n\n");
}
else
{
cout << ("Файл создан в: " + Path + "/" + Name + "\n\n");
for (int lol = 0; lol < 5; lol++)
{
cout << ("Введите что вы хотите вписать в файл: ");
cin.clear();
fflush(stdin);
cin.getline(Slovo, Bukvi);
of << (Slovo);
of << ("\n");
}
}
return 0;
}
Компиляция через строку так:
g++ 1.cpp -DUNICODE -lopengl32 -LC:/msys32/mingw32/lib -lmingw32 -lmingw32 -ldxerr8 -ldinput8 -lshell32 -lsetupapi -ladvapi32 -luuid -lversion -loleaut32 -lole32 -limm32 -lwinmm -lgdi32 -luser32 -lm -Wl,--no-undefined -pipe -lmingw32
Похожие вопросы
- Помогите С++ с цикла for нужно сделать while цикл и do while цикл точнее у меня вышла только с циклом for
- Объясните работу цикла for в c++
- Си. Цикл for. Что не так? Составить программу вывода на экран всех простых чисел не превосходящих введеннного числа N
- C++ Кто то сможет объяснить, почему конструкция switch срабатывает не по плану?
- Как работают циклы For, while, do while можно пример в виде блок схемы?
- Почему 12, а не 2.4?????
- Не могу написать код на с++ нужно решать через циклы но если у вас другие варианты пишите тоже желательно циклы
- Друзья помогите с ребусом VOLVO+FIAT=MOTOR. I need your help urgently...Мой код ниже. Посоветуйте с циклами!)))
- Ошибки в коде. Почему не работает и как сделать чтобы заработало ?
- С++. Почему в методе set_union единица повторяется несколько раз? Код и скриншот ниже