Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.145.52.86] |
|
Сообщ.
#1
,
|
|
|
Подскажите пожалуйста,как можно сравнить 2 строки,зная только 1 символ,точнее проверить,присутствует ли этот символ в строке на нужном месте.
Что-то типо: char * VR = "12345"; if(strcmp(VR, "???4?") == 0) {...}; |
Сообщ.
#2
,
|
|
|
Скажите точнее, как задаётся этот один символ, как его положение обозначается, там и посмотрим.
|
Сообщ.
#3
,
|
|
|
Цитата Славян @ Скажите точнее, как задаётся этот один символ, как его положение обозначается, там и посмотрим. Честно говоря,не понял,что нужно сказать. Суть в чём.... программа ищет файлы в указанном месте. Файлы имеют имена,которые означают(частично) принадлежность к той или иной работе. N1111.dat N1211.dat M1111.dat M1211.dat и в таком духе. Символы N M являются идентификаторами. Нужно определить какой символ имеется в имени файла,что бы их отсортировать. Имена файлов не известны,известны только возможные символы идентификации N M... . Как найти файлы знаю,как переместить знаю,как сверить строку по одному символу не знаю. Добавлено Просто искать символ в строке не годится,строка содержит полный путь к файлу и там тоже могут быть эти символы. |
Сообщ.
#4
,
|
|
|
Попробуйте всё же почётче описать (как по-школьному) что дано и что найти, а то так всё весьма туманно и непонятно.
Вот один из предполагаемых вариантов: 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; } |
Сообщ.
#5
,
|
|
|
Цитата Славян @ что дано и что найти Есть функция,которая ищет последний символ,который я её передаю и возвращает все,что после него 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 } |
Сообщ.
#6
,
|
|
|
Sherman, можетбытьпоможет!
#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; } А тут можно компильнуть нахаляфку |
Сообщ.
#7
,
|
|
|
Цитата JoeUser @ можетбытьпоможет! Спасибо,может пригодится. |
Сообщ.
#8
,
|
|
|
Цитата Sherman @ Просто искать символ в строке не годится,строка содержит полный путь к файлу и там тоже могут быть эти символы. Это как раз и есть решение проблемы. Нужно уметь разобрать полное имя файла на имя, путь, расширение. И наоборот - собрать полноное имя из составных частей. |
Сообщ.
#9
,
|
|
|
Цитата ЫукпШ @ Нужно уметь разобрать полное имя файла на имя, путь, расширение. Сделал так 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 |
Сообщ.
#10
,
|
|
|
Цитата Sherman @ Моё решение не идеально,так как оно не увидит разницы между N12345NW.dat и,например, Name.txt Скорее всего ты изобретаешь пятиколесный велосипед! Воспользуйся тем, над чем народ уже ломал голову и сделай по уму. Почитай вот про эту либу - PCRE. А вот тут народ рассуждает как правильно парсить полные пути к файлам в различных файловых системах. |
Сообщ.
#11
,
|
|
|
Цитата JoeUser @ Воспользуйся тем, над чем народ уже ломал голову и сделай по уму. Спасибо за помощь. |