Записать S1 после каждого слова в S2 - C (СИ)
Формулировка задачи:
Доброго времени суток. Помогите, пожалуйста, никак не могу привести в порядок программу. Перепробовала уйму способов, в любом варианте выдается какая-нибудь ошибка. В интернете похожих заданий не нашла.
Записать S1 после каждого слова в S2.
S1 и S2 – строки символов, задаваемые пользователем.
s – одиночный символ, задаваемый пользователем.
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <malloc.h>
void main (){
int s=0,i=0;
char s3[100]="";
char *s1=(char*)malloc(1*sizeof(char));
char *s2=(char*)malloc(1*sizeof(char));
printf("Enter S1: ");
gets(s1);
printf("Enter S2 : ");
gets(s2);
printf("\n");
printf("Stroka 1: %s",s1);
printf("\n");
printf("Stroka 2: %s",s2);
printf("\n");printf("\n");
while (*s2[i]!='\0');
{if (s2[i]!=' ') strcpy(s3,*s2[i]);
if (s2[i]=' ') strcat(s1,s3);
}
printf("Stroka : ");
puts(s3);
getch();
}Решение задачи: «Записать S1 после каждого слова в S2»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
int main() {
int i = 0, j = 0, k;
char s3[200] = "";
char s1[100] = "";
char s2[100] = "";
printf("Enter S1: ");
gets(s1);
printf("Enter S2: ");
gets(s2);
printf("\n");
printf("Stroka 1: %s", s1);
printf("\n");
printf("Stroka 2: %s", s2);
printf("\n");
printf("\n");
for (i = 0; s2[i] != '\0'; ++i) {
if (s2[i] != ' ') {
s3[j++] = s2[i];
}
else {
s3[j++] = ' ';
for (k = 0; s1[k] != '\0'; ++k) {
s3[j++] = s1[k];
}
s3[j++] = ' ';
}
}
s3[j] = '\0';
printf("Stroka : ");
puts(s3);
system("pause");
return 0;
}
Объяснение кода листинга программы
- Программа считывает строку S1 и S2 с помощью функции gets().
- Выводит на экран строки S1 и S2 с помощью функции printf().
- Создает пустую строку S3 для записи результата.
- Инициализирует счетчики i, j и k для отслеживания позиций символов в строках S2 и S1.
- Проходит по каждому символу в строке S2.
- Если символ не является пробелом, то добавляет его в начало строки S3 и увеличивает счетчик j.
- Если символ является пробелом, то добавляет пробел в начало строки S3 и начинает считывать символы из строки S1, добавляя их в строку S3 после пробела, пока не встретит еще один пробел или конец строки S1. Затем увеличивает счетчик j.
- После окончания обработки строки S2, добавляет в строку S3 дополнительный пробел и заканчивает строку S3 с помощью символа '\0'.
- Выводит на экран строку S3 с помощью функции puts().
- Ожидает нажатия клавиши для выхода из программы с помощью функции system().
- Возвращает 0, чтобы указать, что программа успешно завершилась.