Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.70
illi4
3 / 3 / 0
Регистрация: 12.01.2012
Сообщений: 5
#1

Замена одного слова другим в строке - C (СИ)

12.01.2012, 18:41. Просмотров 4449. Ответов 4
Метки нет (Все метки)

Здравствуйте, помогите плз в решении задачи (срочно!!)
Суть задачи состоит в том, что мы должны ввести с клавиатуры строку, потом ввести слово, которое мы хотим поменять в этой строке на другое и ввести слово, на которое собственно будем менять наше слово, результат должен выглядеть примерно так:
Ведите строку:
Я люблю мороженое
Введите слово которое будем менять:
мороженое
Введите слово на которое будем менять:
пиво
результат: Я люблю пиво

Вот что-то вроди этого, заранее спасибо!
http://www.cyberforum.ru/c-beginners/thread413427.html
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2012, 18:41
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Замена одного слова другим в строке (C (СИ)):

Замена слова в строке
Есть код: #include #include #include #include #include void main() {...

Замена слова в строке
Собственно, задача - ввести(с клавиатуры) строку и два слова. Все вхождения...

Замена первого слова в строке
Помогите с решением задачи. Нужно заменить первое слово в строке на слово в...

Замена в каждой строке одного заданного символа на другой заданный символ
ПОМОГИТЕ РЕШИТЬ ЗАДАЧУ)) Даны 2 строки до 80 символов. Необходимо Заменить в...

Сложение одного большого числа с другим большим числом
Нужно создать программу, в которой очень большие числа нужно представлять в...

4
go
Эксперт С++
3636 / 1368 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
12.01.2012, 19:47 #2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
char *del (char *s, char *t1, char *t2)
{
   char *p, *t;
   
   for ( p = strstr (s, t1) ; p ; p = strstr (s, t1) )
   {
      t = strdup (p + strlen (t1) );
      memset (p, 0, sizeof(p) );
      strcpy (p, t2);
      strcat (p, t);
      free (t);
   }
   return s;
}       
 
int main (void)
{
   char s[BUFSIZ] = "Hellow world";
   char *t1 = "Hellow";
   char *t2 = "Hello";
   
   printf ( "%s \n", s);
   printf ( "%s \n", del (s, t1, t2) );
   
   return 0;
}
http://liveworkspace.org/code/dc6a623b807fe72eb30227d33d2bb5a2

Не учитывая ситуации выхода за пределы выделенной памяти.
2
igorrr37
1863 / 1481 / 749
Регистрация: 21.12.2010
Сообщений: 2,473
Записей в блоге: 11
12.01.2012, 20:11 #3
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <string.h>
 
int main()
{
    char* a = "aa MNaa gfaa", b[256], *pa = a, *pb = b, *ow = "aa", *nw = "bbb";
    const size_t owSize = strlen(ow), nwSize = strlen(nw);
    for(; *pb = *pa; ++pa, ++pb)
    {
        if(!strncmp(pa, ow, owSize))
        {
            strcpy(pb, nw);
            pa += owSize - 1;
            pb += nwSize - 1;
        }
    }
    puts(b);
    return 0;
}
1
illi4
3 / 3 / 0
Регистрация: 12.01.2012
Сообщений: 5
12.01.2012, 23:27  [ТС] #4
igorrr37, попробовал переделать вашу программу таким образом, чтобы ввод осуществлялся с клавиатуры, почему-то меняет только первые буквы слов, поменял вот так:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h>
#include <string.h>
 
int main()
{
    char a[60], b[256], *pa = a, *pb = b, ow[10], nw[10];
    int i;
    const size_t owSize = strlen(ow), nwSize = strlen(nw);
    printf ("Vvedite stroku\n");
    gets (a);
    printf ("Vvedite slovo, kotoroje budem menyat'\n");
    gets (ow);
    printf ("Vvedite slovo na kotoroje budem menyat'\n");
    gets (nw);
    
    for(; *pb = *pa; ++pa, ++pb)
    {
        if(!strncmp(pa, ow, owSize))
        {
            strcpy(pb, nw);
            pa += owSize - 1;
            pb += nwSize - 1;
        }
    }
    puts(b);
    getchar();
    getchar ();
        return 0;
}
спасибо

Добавлено через 2 часа 6 минут
Дико извиняюсь, но подскажите плз в чем моя ошибка в программе (предыдущее сообщение), программа почему-то вместо замены слова целиком заменяет только первую букву слова, заранее спасибо

Добавлено через 39 минут
Проблемму исправил, всем, кто помогал, спасибо огромное, ооочень выручили))
2
zmhan
1 / 1 / 1
Регистрация: 25.02.2014
Сообщений: 53
12.05.2014, 22:58 #5
можно код исправленный?
0
12.05.2014, 22:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2014, 22:58
Привет! Вот еще темы с решениями:

Заменить одно слово другим в строке
Всем доброго времени суток! столкнулся с такой задачей - заменить одно слово...

Напечатать все слова, в которых первая буква слова входит в него более одного раза.
Решите пожалуйсто задачу на Си Напечатать все слова, в которых первая буква...

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

Вывести на экран содержимое файла с программой на С, подсвечивая другим цветом ключевые слова
Вывести на экран содержимое файла с программой на С, подсвечивая другим цветом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru