На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
! Правила раздела
1. Не создавайте несколько одинаковых тем, ибо модератор может расценить их, как спам и удалить все.
2. Для решения задач по GPSS есть отдельная тема. Все задачи по GPSS опубликовывать в этой теме! Перед опубликовыванием вашей задачи просмотрите всю тему, возможно вы сразу найдете решение.
3. Давайте вашим темам ОСМЫСЛЕННЫЕ названия, а также указывайте язык программирования. Пример: [Pascal]:Работа с файлами и записями.
4. Использования тега CODE обязательно при публикации текста программы.

Темы, оформленные с явным игнорированием правил и отсутствием смысла, будут закрыты/удалены!
Вам помогли? Напишите об этом здесь (в портфолио фрилансера)

Фрилансерам:
5. Демпинг цен запрещен (даже если Вы готовы работать бесплатно). Цены обсуждаются в приватном общении. Если вы готовы рещить задачу бесплатно, просто решите ее быстрее, чем возникнет предложение сделать это за деньги.
6. Пользователям, входящим в группу Newbie, запрещается предлагать свои услуги (завуалированно в т.ч.)
7. В посте с предложением выполнить работу, обязательно указывать ссылку на свое портфолио в Отзывы, Благодарности, Портфолио Это правило работает и в том случае, если вы выполняете работу бесплатно.
8. Реклама (даже завуалированная) своих фриланских сайтов запрещена

Нарушение данных пунктов влечет до RO или БАНА (при неоднократом)
Модераторы: ttiger, mikefreelance, Rust
  
    > Сравнение строк Си,зная только и символ., Сравнение строк Си,зная только и символ.
      Подскажите пожалуйста,как можно сравнить 2 строки,зная только 1 символ,точнее проверить,присутствует ли этот символ в строке на нужном месте.
      Что-то типо:

      char * VR = "12345";
      if(strcmp(VR, "???4?") == 0) {...};
        Скажите точнее, как задаётся этот один символ, как его положение обозначается, там и посмотрим. ;)
          Цитата Славян @
          Скажите точнее, как задаётся этот один символ, как его положение обозначается, там и посмотрим.

          Честно говоря,не понял,что нужно сказать.
          Суть в чём.... программа ищет файлы в указанном месте.
          Файлы имеют имена,которые означают(частично) принадлежность к той или иной работе.
          N1111.dat N1211.dat M1111.dat M1211.dat и в таком духе.
          Символы N M являются идентификаторами.
          Нужно определить какой символ имеется в имени файла,что бы их отсортировать.
          Имена файлов не известны,известны только возможные символы идентификации N M... .
          Как найти файлы знаю,как переместить знаю,как сверить строку по одному символу не знаю.

          Добавлено
          Просто искать символ в строке не годится,строка содержит полный путь к файлу и там тоже могут быть эти символы.
            Попробуйте всё же почётче описать (как по-школьному) что дано и что найти, а то так всё весьма туманно и непонятно.
            Вот один из предполагаемых вариантов:
            ExpandedWrap disabled
              int funcKol( char *fileName, int position, char *mask)
              {
                int kol=0; // количество имеющихся файлов
                for( int maskPos=0; mask[maskPos]!=0; maskPos++) // идём по маске
                  if( fileName[position]==mask[maskPos] ) // ура, есть такой файл!
                      kol++;
                return kol;
              }
              Цитата Славян @
              что дано и что найти


              Есть функция,которая ищет последний символ,который я её передаю и возвращает все,что после него
              ExpandedWrap disabled
                char *check (register const char *s, int c) {
                 
                  char *rtnval = "0";
                 
                  do {
                 
                    if (*s == c)
                      rtnval = (char*) s;
                 
                  } while (*s++);
                 
                  return (rtnval + 1);
                }
                 
                int main()
                {
                    char gfile[] = "C:\Users\Admin\Desktop\N12345NW.dat";
                    char * VR = check(gfile,'\\');
                 
                    if(!strcmp(VR, "N???????.dat") == 0 ) return 0; //Тут нужно проверить имеет ли полученная строка инициализатор N именно в такой последовательности
                 
                    //...
                 
                    return 0
                }
              Сообщение отредактировано: Sherman -
                Sherman, можетбытьпоможет!

                ExpandedWrap disabled
                  #include <stdio.h>
                   
                  int main(void) {
                    /** что ищем **/
                    unsigned char *C = "c";
                    /** в какой позиции ищем **/
                    unsigned int Pos = 2;
                    /** где ищем **/
                    unsigned char *Str = "schas!";
                    unsigned char *P = strstr(Str,C);
                    if (P && P-Str==Pos-1) {
                       printf("Найдено, позиция %d от нуля!\n",P-Str);
                       return 0;
                     }
                    printf("Не найдено!\n");
                    return -1;
                  }


                А тут можно компильнуть нахаляфку :)
                Мои программные ништякиhttp://majestio.info
                  Цитата JoeUser @
                  можетбытьпоможет!

                  Спасибо,может пригодится.
                    Цитата Sherman @
                    Просто искать символ в строке не годится,строка содержит полный путь к файлу и там тоже могут быть эти символы.

                    Это как раз и есть решение проблемы.
                    Нужно уметь разобрать полное имя файла
                    на имя, путь, расширение.
                    И наоборот - собрать полноное имя из составных
                    частей.
                    Подпись была выключена в связи с наложенным заземлением.
                      Цитата ЫукпШ @
                      Нужно уметь разобрать полное имя файла
                      на имя, путь, расширение.

                      Сделал так
                      ExpandedWrap disabled
                        char *check (register const char *s, int c) {
                         
                          char *rtnval = "0";
                         
                          do {
                         
                            if (*s == c)
                              rtnval = (char*) s;
                         
                          } while (*s++);
                         
                          return (rtnval + 1);
                        }
                         
                        int main()
                        {
                            char gfile[] = "C:\Users\Admin\Desktop\N12345NW.dat";
                            char * VR = check(gfile,'\\');
                         
                            if(strncmp(VR, "N", 1) == 0 ) {
                                
                                //...
                            }
                         
                            if(strncmp(VR, "M", 1) == 0 ) {
                                
                                //...
                            }
                         
                            //...
                         
                            return 0
                        }


                      В моём случае это работает.
                      Но если надо будет определить наличие символа в середине или в конце,то нет.
                      Тут больше подойдёт вариант JoeUser ,с тем условием,что точно известна позиция символа.
                      Моё решение не идеально,так как оно не увидит разницы между N12345NW.dat и,например, Name.txt
                        Цитата Sherman @
                        Моё решение не идеально,так как оно не увидит разницы между N12345NW.dat и,например, Name.txt

                        Скорее всего ты изобретаешь пятиколесный велосипед!
                        Воспользуйся тем, над чем народ уже ломал голову и сделай по уму.
                        Почитай вот про эту либу - PCRE. А вот тут народ рассуждает как правильно парсить полные пути к файлам в различных файловых системах.
                        Мои программные ништякиhttp://majestio.info
                          Цитата JoeUser @
                          Воспользуйся тем, над чем народ уже ломал голову и сделай по уму.

                          Спасибо за помощь.
                          1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                          0 пользователей:


                          Рейтинг@Mail.ru
                          [ Script Execution time: 0,1046 ]   [ 14 queries used ]   [ Generated: 18.06.19, 11:34 GMT ]