Вот написал программу.
В нее задаются строки и размеры новых строк. потом она копирует заданные изначально строки в новые столько раз, чтоб в новой первоначальные строки повторялись, до тех пор пока длина новой строки не станет равной длине, заданной пользователем.(последнее вхождение можно укорачивать)
Например:
Дано:
строка: привет
длина: 10
результат:приветприв
#include <stdio.h>
#include <locale.h>
#include <conio.h>
#include <limits.h>
#include <string.h>
#include <Windows.h>
void FillStr(char *s, int N)
{
char str[CHAR_MAX]; // массив, хранящий в себе новую строку
str[0] = '\0';
int kol = N / strlen(s); // kol - количество целых вхождений строки s в строку размера N
for (int i = 0; i < kol + 1;i++) //копирование в конец новой строки
strcat(str,s);
for (int i = 0; i < N; i++)//вывод строки на экран
{
printf("%c", str[i]);
}
printf("\n");
}
void main()
{
setlocale (LC_CTYPE, "rus");
char s[4][CHAR_MAX];//s - массив в котором хранятся строки
int n[4]; //массив, хранящий длины новых строк
printf("Введите строки: ");
for (int i = 0; i < 5; i++) //ввод строк
gets(s[i]);
for(int i = 0; i < 5; i++) // перекодировка для возможности использования русского языка
OemToCharA(s[i],s[i]);
printf("Укажите длины конечных строк: ");
for(int i = 0; i < 5; i++) // ввод длин новых строк
{
scanf("%d", &n[i]);
}
for(int i = 0; i < 5; i++) // выполнение задачи
FillStr(s[i],n[i]);
_getch();
}
программа работает но в конце выдает ошибку(после получения правильного результата):
"Run-Time Check Failure #2 - Stack around the variable 's' was corrupted.",
а если вытащить .ехе файл, то он тоже нормально выполнит, но потом выдаст это: