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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2010, 21:55   #1
Дырдин
Пользователь
 
Аватар для Дырдин
 
Регистрация: 26.09.2009
Сообщений: 81
По умолчанию Поиск по текстовому файлу

Мне нужно найти строку в файле.

Ввожу
Имя пользователя = "ser"
Пароль = "44333333"

После всех издевательств в программе имеем: "ser33333344pas".Эту строчку мы и ищем в файле

Вот содержимое файла для поиска

Код:
11user22222211pas wuser33333322pas costyauser11111122pas nauser55555599pas ser33333344pas manuser44444466pas
Код программы

Код:
# include "stdafx.h"
# include <conio.h>
# include <stdio.h>
# include <stdlib.h>
# include <locale.h>
# include <math.h>
# include <string.h>

int main ()
{
	FILE *pasdat=fopen("C:\\pas.dat", "r");
	int shet = 0,k = 0;
	char username[100],pas[8],current_str[1000],poisk[1000];
	fgets(current_str,1000, pasdat);
	setlocale (LC_ALL,"Russian");
	printf("Введите имя пользователя = ");
	scanf("%s",&username);
	strcat(username,"user");//шильдик юзера чтобы не путалось с паролем
	printf("Введите пароль = ");
	for(int i = 0;i < 8;i++)
	{
		pas[i] = getch();
		if(pas[i]!=8)
		{
			if(pas[i] != '\b')	printf("*");
		}
		else
		{
			printf("\b \b");
			i = i-2;
		}
	}
	pas [8] = 0;
	strrev(pas);//поворачиваем пароль
	strcat(pas,"pas");//шильдик пароля чтобы не путалось с юзером
	strcat(username,pas);
	username[strlen(username)] = '\0';
	printf("%s",username);
	if (!strcmp(current_str,username))
	{
		printf("Удачно");
		k++;
	}
	return 0;
	getch ();
}


Вопрос по этому фрагменту

Код:
if (!strcmp(current_str,username))
{
	printf("Удачно");
	k++;
}
Подскажите, что не так!!! Уже несколько вечеров не могу реализовать поиск
Дырдин вне форума Ответить с цитированием
Старый 25.02.2010, 22:21   #2
RoS
Форумчанин
 
Аватар для RoS
 
Регистрация: 13.12.2009
Сообщений: 272
По умолчанию

strcmp сравнивает строки по алфавиту считай, она не будет разбираться и в твоей длинной строке искать включения другой строки, попробуй скначала разбить строку с помощью strtok()

НЕТ, лучший вариант для тебя - strstr()
Если я помог вам - порадуйте меня, нажмите на весы слева
RoS вне форума Ответить с цитированием
Старый 25.02.2010, 22:51   #3
Дырдин
Пользователь
 
Аватар для Дырдин
 
Регистрация: 26.09.2009
Сообщений: 81
По умолчанию

А как может это выглядть в коде? Насколько я понимаю strstr сравнивает только полностью равные строки? Как это можно связать с strtok???

Код:
if (!strstr(username,strtok(current_str," ")))
{
	printf("Удачно");
	k++;
}
Не работает
Дырдин вне форума Ответить с цитированием
Старый 25.02.2010, 23:17   #4
RoS
Форумчанин
 
Аватар для RoS
 
Регистрация: 13.12.2009
Сообщений: 272
По умолчанию

http://www.codenet.ru/progr/cpp/sprd/strstr.php читай
Если я помог вам - порадуйте меня, нажмите на весы слева
RoS вне форума Ответить с цитированием
Старый 26.02.2010, 13:38   #5
artush1984
Форумчанин
 
Аватар для artush1984
 
Регистрация: 27.04.2009
Сообщений: 184
По умолчанию

Код:
#include <iostream>
#include <fstream>
#include <string>


int main()
{
	std::ifstream test("text.txt");
	std::string temp;
	while(!test.eof())
	{
		test>>temp;
		if(temp == "ser33333344pas")
		{
			std::cout<<"est"<<std::endl;
			break;
		}
		temp.clear();
	}
	
	
	return 0;
}


может так?
Hа C я могy пpосто делать ошибки, на C++ я могy их наследовать!
artush1984 вне форума Ответить с цитированием
Старый 26.02.2010, 13:50   #6
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Какая-то неопределённая система такая: useruseruserpaspas - это юзер user с паролем sapresu или юзер useruser с паролем sap?
Somebody вне форума Ответить с цитированием
Старый 26.02.2010, 14:00   #7
artush1984
Форумчанин
 
Аватар для artush1984
 
Регистрация: 27.04.2009
Сообщений: 184
По умолчанию

Код:
#include <iostream>
#include <fstream>
#include <string>


int main()
{
	std::ifstream test("text.txt");
	std::string temp(" ");
	std::string user;
	std::cout<<"Insert username"<<std::endl;
	std::cin>>user;
	std::cout<<"Insert password"<<std::endl;
	std::string password;
	std::cin>>password;
	temp = user;
	temp += password;
	temp +="pas";
	while(!test.eof())
	{
		test>>temp;
		if(temp == "ser33333344pas")
		{
			std::cout<<"est"<<std::endl;
			break;
		}
		temp.clear();
	}
	
	
	return 0;
}


в общем по моему так !! У меня работает
Hа C я могy пpосто делать ошибки, на C++ я могy их наследовать!
artush1984 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск по текстовому файлу Max_Grinyuk Помощь студентам 10 13.11.2009 21:11
как сделать поиск по текстовому файлу B@R@B@$HK@ Общие вопросы C/C++ 11 21.06.2009 16:29
как прикрепитить прогу к текстовому файлу? BLACK_KOT Общие вопросы Delphi 1 24.09.2007 17:33