пОМОГИТЕ с пОИСКОМ
например кидаю:
lopa 45678
kopa 45566
gopa 34356
dupa 45464
запускаю поиск
void __fastcall TForm1::poiskClick(TObject *Sender)
{
fopen("serega.txt","rt+");
//fseek (myfile,0L,SEEK_SET);
strcpy(key,familia->Text.c_str());
do
{fscanf(myfile,"%s",s);
ShowMessage(s1);
if (feof(myfile)|| !strcmp(s,key)) break;
}
while(true);
fclose(myfile);
if (!strcmp(s,key))
ShowMessage(AnsiString(s);
}
key это че надо искать, s-в какой строке.
так он мне находит только когда s выводит,он выводит только слово по которому я искал,а телефон не выводит.как мне это порешить то
такая ерунда значит.мне надо маленький сравочник телефонный накидать.беру значит создаю txt туды
например кидаю:
lopa 45678
kopa 45566
gopa 34356
dupa 45464
запускаю поиск
void __fastcall TForm1::poiskClick(TObject *Sender)
{
fopen("serega.txt","rt+");
//fseek (myfile,0L,SEEK_SET);
strcpy(key,familia->Text.c_str());
do
{fscanf(myfile,"%s",s);
ShowMessage(s1);
if (feof(myfile)|| !strcmp(s,key)) break;
}
while(true);
fclose(myfile);
if (!strcmp(s,key))
ShowMessage(AnsiString(s);
}
key это че надо искать, s-в какой строке.
так он мне находит только когда s выводит,он выводит только слово по которому я искал,а телефон не выводит.как мне это порешить то
Хех. Знаешь в чем прикол?
Угадай что будет в s после операции
fscanf(myfile,"%s",s); (да и любого scanfa впрочем) на примере строки
"lopa 45678" ?
в s у тебя будет находиться только "lopa". Она считывает у тебя строку до первого пробела.
Вообще, я никогда не использую построчное чтение из файла. Обычно - гружу файл целиком в память (если размер не велик) или использую постраничный доступ. А можно сделать просто замапить файл в память и работать с ним как с указателем на память (см. CreateFileMapping и MapViewOfFile).
Тогда тебе достаточно будет сделать:
entry=strstr(fptr,key); - где fptr указатель на замапленную память для файла.
entry будет указывать на начало нужной тебе строки или будет NULL если строка не найдена. Ну а конец нужной тебе строки будет либо закрываться \r\n либо будет концом образа памяти. Вот собсно и все.