Это возможное решение для вашей проблемы, и проблема была в Точка 1 , где вы используете случай A или случай B .Проблема в том, что вы использовали функции scanf
и fgets
, а поскольку scanf
не использует \n
и fgets
, вы всегда будете получать "пустую" строку (просто \n
) в переменной str
.Таким образом, в случае A вы просто используете другой scanf
или в случае B вам нужно использовать этот последний \n
, а затем прочитать желаемую строку.
Кроме того, для части разделения я просто использую простую функцию memcpy и разделяю строку пополам с помощью strlen , чтобы вычислить длину строки.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
int x;
printf("Pick the program that should be executed:\n");
printf(" 1. Split text\n Enter an option:\n");
scanf("%d", &x);
if (x == 1) {
printf("Write the text you want to use:\n");
char str[100];
// -- Point 1 --
// A
//scanf("%s", str);
// B
getchar();
fgets(str, 100, stdin);
// -------------
printf("Input was: %s\n", str);
int len = strlen(str);
char *left, *right;
left = malloc(len/2 + 1);
right = malloc(len/2 + 1);
memcpy(left, str, len/2);
left[len/2] = 0;
memcpy(right, str + len/2, len/2);
right[len/2] = 0;
// print the results
printf("Original : %s\nLeft side: %s\nRight side: %s\n\n", str, left, right);
// clean up
free(left);
free(right);
}
return 0;
}