Другие языки программирования и технологии

Как в этом коде C++ в файл через каждые две буквы добавить цифру любую? За ранее огромное спасибо

// ConsoleApplication5.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include
#include
#include
#include
#pragma warning(disable:4996) // отключение ошибки

using namespace std;

void Sliyanie()
{
FILE *f1, *f2, *fr;

f1 = fopen("file1.txt", "r");
f2 = fopen("file2.txt", "r");
fr = fopen("filer.txt", "w");

int c, n;

while (true)
{
if ((c = fgetc(f1)) == EOF) break;
fputc(c, fr);
if ((c = fgetc(f1)) == EOF) break;
fputc(c, fr);
if ((n = fgetc(f2)) == EOF) break;
fputc(n, fr);
}

if (c != EOF) while ((c = fgetc(f1)) != EOF) fputc(c, fr);

fclose(f1);
fclose(f2);
fclose(fr);

}

int main()
{
FILE *f1, *f2;
char s[100];

if ((f1 = fopen("file1.txt", "d")) == NULL) return 0;

cout << "Vvedite text 1-file: ";
cin.getline(s, 100);
fprintf(f1, "%s", s);
fclose(f1);

if ((f2 = fopen("file2.txt", "w")) == NULL) return 0;

cout << "Vvedite text 2-file: ";
cin.getline(s, 100);
fprintf(f2, "%s", s);
fclose(f2);

system("cls");

Sliyanie(); // вызов метода слияния файлов

system("pause");

return 0;
}
***михаил ***
***михаил ***
1 134
Мне в голову приходит только 2 варианта:
1. Увеличить ваш цикл до 6 символов за проход.

while (true)
{
if ((c = fgetc(f1)) == EOF) break;
fputc(c, fr);
if ((c = fgetc(f1)) == EOF) break;
fputc(c, fr);
fputc('1', fr);

if ((c = fgetc(f2)) == EOF) break;
fputc(c, fr);
if ((c = fgetc(f1)) == EOF) break;
fputc(c, fr);
fputc('2', fr);

if ((c = fgetc(f1)) == EOF) break;
fputc(c, fr);
if ((c = fgetc(f2)) == EOF) break;
fputc(c, fr);
fputc('3', fr);
}

2. Создать строку на 10 символов (6 букв + 3 цифры + конец строки), в конце каждого второго прохода вставлять цифры на каждое третье место, выводить строку файл

int c, n, i = 0;
char temp[10];
temp[9] = '\0';

while (true)
{
if ((c = fgetc(f1)) == EOF) break;
temp[(i >> 1) * 3 + (i++ & 1)] = c;
if ((c = fgetc(f1)) == EOF) break;
temp[(i >> 1) * 3 + (i++ & 1)] = c;

if ((c = fgetc(f2)) == EOF) break;
temp[(i >> 1) * 3 + (i++ & 1)] = c;
if (i == 6)
{
temp[2] = '1';
temp[5] = '2';
temp[8] = '3';
fputs(temp, fr);
i = 0;
}
}
if (i > 0)
{
i = (i >> 1) * 3 + (i & 1);
for (int j = 2; j < i; j += 3)
temp[j] = '1' + j / 3;
temp[i] = '\0';
fputs(temp, fr);
}
Азамат Кусаинов
Азамат Кусаинов
783
Лучший ответ
может

for (int i = 0; i < 100; i+=3) // увеличение i на 3 и так до 100 чтоб через 2 цифру ставить
{
s[i] = chislo; // присвоение каждому 2 символу цифры ну или 3 му.
}
s[99] = 0; // может нужен может нет.

а вот чтоб число было какое попало гугли random.
и последнему может а может и нет.
s[99] = 0; наверно. чтоб кракозябру не показывало.

и как туда добавить записать не знаю к сожалению, надеюсь сам знаешь, конечно если я норм ответил.
***михаил *** И вамспасибо за ответ !