Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2016, 01:06   #1
Кристина97
Новичок
Джуниор
 
Регистрация: 04.12.2016
Сообщений: 2
Лампочка Нужна помощь по работе со строками символов

Ошибка в 3ем задании: Заменить каждое вхождение в строку символов указанного пользователем слова на другое слово. Выводит только первое слово почему-то. Спасибо заранее

Ошибка где-то тут:
Код:
case '3' :  printf("Vvedite zameniaemoe slovo\n");
                        gets(zamen);
                        printf("Vvedite vstavliaemoe slovo\n");
                        gets(vstavl);
                        p=strtok(s," ");
                        b=0;
                        while(p!=NULL)
                        {
                            b++;
                            strcpy(mas[b],p);
                            p=strtok(NULL," ");
                        }
                        for (i=0;i<b;i++)
                        if (strcmp(mas[i],zamen)==0)
                        {
                            strcpy(mas[i],vstavl);
                        }
                            printf("%s",mas);
                        break;
Весь код:
Код:
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
 
 
void main(void)
{
    char a,s[255], pod[255],*p,zamen[100],vstavl[100],mas[100][100];
    int n,i,b;
    printf("Vvedite text\n");
    gets(s);
 
    while(1)
    {
        printf("\nWiberite punkt menu ");
        printf("\n1.Perevesti vse simvoli vvedennoi stroki v niszniy registr.");
        printf("\n2.Podschitat kolichestvo vhoszdeniy podstroki v stroku.");
        printf("\n3.Zamenit' kazhdoe vhoschdenie v stroku simvolov ukazannogo polzowatelem slova na drugoe slovo.\n");
        printf("\nDlia vihoda naschmite ESC.\n");
        a=getch();
 
            switch(a)
            {
                case '1' :  strlwr(s);
                        printf("\nRezultat: %s",s);
                        getch();
                        break;
 
                case '2' :  i=0;
                        printf("Vvedite podstroku: ");
                        scanf("%s",pod);
                        p=s;
                        while(p)
                        {
                            if(p=strstr(p,pod))
                            {
                                i++;
                                p++;
                            }
                        }
                        printf("\nKolichestvo vhozdeniy: %d",i);
                        getch ();
                        break;
 
                case '3' :  printf("Vvedite zameniaemoe slovo\n");
                        gets(zamen);
                        printf("Vvedite vstavliaemoe slovo\n");
                        gets(vstavl);
                        p=strtok(s," ");
                        b=0;
                        while(p!=NULL)
                        {
                            b++;
                            strcpy(mas[b],p);
                            p=strtok(NULL," ");
                        }
                        for (i=0;i<b;i++)
                        if (strcmp(mas[i],zamen)==0)
                        {
                            strcpy(mas[i],vstavl);
                        }
                            printf("%s",mas);
                        break;
                case 27:
                        exit(1);
                default:
                        printf("Takogo punkta net");
                        getch();
            }
 
    }
}
Кристина97 вне форума Ответить с цитированием
Старый 04.12.2016, 01:38   #2
olej.tsil
Заблокирован
 
Регистрация: 29.11.2016
Сообщений: 215
По умолчанию

Цитата:
Сообщение от Кристина97 Посмотреть сообщение
printf("%s",mas);
А вот это что такое для 2-х мерного массива символов (массива строк)?
olej.tsil вне форума Ответить с цитированием
Старый 04.12.2016, 01:40   #3
olej.tsil
Заблокирован
 
Регистрация: 29.11.2016
Сообщений: 215
По умолчанию

Цитата:
Сообщение от Кристина97 Посмотреть сообщение
Ошибка где-то тут:
Код:
int main( void ) {
   char s[ 255 ] = "axxx zzz xxx s xxxx yyy xxx";
   printf( "%s => ", s );
   char s1[ 255 ] = "",
        *zamen = "xxx", *vstavl = "iiii",
        *p = strtok( s, " " );
   while( p != NULL ) {
      if( 0 == strcmp( p, zamen ) )
         strcat( s1, vstavl );
      else
         strcat( s1, p );
      strcat( s1, " " );
      p = strtok( NULL, " " );
   }
   printf( "%s\n", s1 );
   return 0;
}
Код:
$ ./tok2
axxx zzz xxx s xxxx yyy xxx => axxx zzz iiii s xxxx yyy iiii
olej.tsil вне форума Ответить с цитированием
Старый 04.12.2016, 22:34   #4
Кристина97
Новичок
Джуниор
 
Регистрация: 04.12.2016
Сообщений: 2
По умолчанию

Точно, зациклить вывод iтой
Кристина97 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь по работе с файлами в С. kama4i Общие вопросы C/C++ 2 30.06.2015 09:21
Нужна помощь по работе с МИДИ файлами dim3740 Фриланс 1 08.04.2015 18:12
нужна помощь в работе с файлами gemoglobin Паскаль, Turbo Pascal, PascalABC.NET 2 08.07.2009 17:21
нужна помощь в работе с формой и БД Aliyushka Microsoft Office Excel 0 15.01.2009 23:54
нужна помощь по работе с строками файлов... Ruffian Общие вопросы Delphi 9 15.11.2006 16:05