Как поставить запятые перед определенными словами в строке? - C (СИ)
Формулировка задачи:
Дана строка символов. Поставить перед союзами "но" и "а" запятые (если они не в начале предложения)
Есть кое- какой код, но он не работает, увы. Хотя не удивительно, ведь я его писал))
Укажите на ошибки и подскажите как исправить, плиз.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <windows.h>
#include <string.h>
main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int len, DlinaWord1, DlinaWord2, DlinaWord3, DlinaWord4;
char s[500], word1[]="но",word2[]="а",word3[]=",но",word4[]=",а";
// указатель на найденное слово
int p=0,start=0; // указатель на начало зоны поиска
puts ( "Введите предложение" );
gets ( s );
DlinaWord1 = strlen(word1);
DlinaWord2 = strlen(word2);
DlinaWord3 = strlen(word3);
DlinaWord4 = strlen(word4);
start = s; // в первый раз ищем с начала строки
while ( 1 ) {
p = strstr (start, word1); // есть ли еще слова?
if ( p == NULL ) break; // если нет, то выход
strncpy(s+start, word3, DlinaWord3);
start = p + DlinaWord1; // сместили начало поиска
};
while ( 1 ) {
p = strstr (start, word2); // есть ли еще слова?
if ( p == NULL ) break; // если нет, то выход
strncpy(s+start, word4, DlinaWord4);
start = p + DlinaWord2; // сместили начало поиска
}
printf ( "Переделанное предложение %s", s );
}Решение задачи: «Как поставить запятые перед определенными словами в строке?»
textual
Листинг программы
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
char s[100];
int p, i=0, j=0, start=0, DlinaWord_bez_0, DlinaWord_s_0;
puts ( "Введите предложение" );
gets ( s );
DlinaWord_bez_0 = strlen(s);
printf("%d\n",DlinaWord_bez_0);
DlinaWord_s_0 =DlinaWord_bez_0+1;
p=DlinaWord_bez_0;
while (p!=0 ) // что то типо такого цикла "сдвига"
{
s[p+1]=s[p];
p--;
}
printf("\n");
puts (s);
}