Выбивает ошибку, не считывает введенную строку. Вопрос: почему? Программа должна разделять введенную пользователем строку на 2: с четными и нечетными символами.

#include
#include
#include
#include
#include
#include

int main()

{

setlocale(LC_ALL, "rus");

char stroka[1000];

int n;

char str1[1000];

char str2[1000];



printf("\nВведите строку\n>> ");

scanf_s("%c", stroka);

n = strlen(stroka);


int length_str1 = n / 2 + n % 2;

int length_str2 = n - length_str1;



str1[length_str1 + 1];

str2[length_str2 + 1];


str1[length_str1] = str2[length_str2] = '\0';

int j = 0;


for (int i = 0; i < n; ++i)

{

if (i % 2)

str2[j++] = stroka[i];

else

str1[j] = stroka[i];


}


printf("Результат работы программы : \n");


printf("S1 :: %s\n", str1);

printf("S2 :: %s\n", str2);


return 0;

}


restIess: А в какой строке ошибка? У меня запускается

Ответы

Ответ дал: restIess
0

Программа неверно определяла размер строки, считывать строку лучше с помощью функции fgets();

/*

В S2 храним четные, в S1 нечётные;

*/

#include<stdio.h>

#include<locale.h>

#include<string.h>

int main()

{

setlocale(LC_ALL, "rus");

char stroka[1000];

int n;

char str1[1000];

char str2[1000];

printf("\nВведите строку\n>> ");

fgets(stroka, 1000, stdin);

n = strlen(stroka);

int cnt1 = 0, cnt2 = 0;

printf("\n%d\n", n);

 

for (int i = 0; i < n; i++) {

 if (i % 2 == 0) {

  str2[cnt2] = stroka[i];

  cnt2++;

 }

 else {

  str1[cnt1] = stroka[i];

  cnt1++;

 }

}

str2[cnt2] = '\0';

str1[cnt1] = '\0';

 

 

printf("Результат работы программы : \n");

printf("S1 :: %s\n", str1);

printf("S2 :: %s\n", str2);

return 0;

}

Вас заинтересует