Archief - C: gebruikers opslagen in bestand en wijzigen, goed systeem?

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Noizz.be

Legacy Member
Ok, merci voor de info :)

Is er dan een functie in C die md5() ofzo is (gelak bij php dus). Of moet ik ergens op internet een algoritme zoeken dat zo werkt en implementeren als een function in mijn programma?

Noizz

Tyfius

Legacy Member
Als da gewoon voor school is, zou ik zeker al die moeite niet doen ze...

Nuja, voor zover ik weet bestaat er zo geen functie, en zoek je best een op 't internet op. Maar ik denk dat zo'n algoritmes ver boven je niveau liggen (n/o), vermits die meestal toch worden gemaakt met een of andere hex/shift/asm functies enzo...

Ik heb ooit is in C++ een basic oplossing gebruikt:

Code:
long Password::hash(const MyString* npassword){

	int i;

	long temphash=0;

	for (i=0;i<npassword->getLength();i++)

	{

		temphash=(npassword->getChar(i)<<i)^temphash;

		// gaat een 32bit hash opstellen van het meegegeven passwoord dat veilig kan bewaard worden in plain text

	}

	return temphash;



}

note: dit is een C++ voorbeeld van een schoolproject dat ik ooit heb moeten maken. In plaats van het paswoord als een string op te slaan, sla ik het hier op als een long. Ik vraag dus aan de gebruiker (indien hij al bestaat) zijn passwoord, en voer een gelijkaardige controle erop uit. Indien de 2 long waarde met elkaar overeen komen, is het paswoord juist.

Noizz.be

Legacy Member
Hoe kan je een filepointer 1 karakter terug laten gaan?

want ik heb een probleem met hetvolgende:
Als ik een lijn inlees van mijn tekstbestand, tot aan de newline dus. Doe ik ch = fgetc(f); waardoor het volgende karakter van het tekstbestand in ch gezet wordt, ALS ch = EOF dan moet mijn lus eindigen. ELSE (wanneer er dus een gewone letter staat) file pointer 1 positie achteruit, en string inlezen. Nu gaat hij dus de eeste letter "overslagen" want die zit in die ch.

Greetz
Noizz

wlibaers

Legacy Member
ftell en fseek kunnen ook werken (zijn ongeveer equivalent aan fgetpos en fsetpos, maar hebben een beperking op de maximale grootte van bestanden).

Een andere optie, als het slechts om één letter gaat, is ungetc. Dit kan wel niet in combinatie met ftell en fgetpos gebruikt worden.

Nog een optie is zelf de invoer op te slaan in het programma (in het eenvoudigste geval betekent dit gewoon het hele bestand ineens in het geheugen inlezen, je kan ook met delen van het bestand werken). Een variant hierop is memory mapping, echter niet toepasbaar in standaard C of C++.

Silenger.BE

Legacy Member
Waarom zou men in c niet kunnen gebruik maken van memorymapping,
is gewoon een windows api aanroepen om een buffer te maken...

CreateFileMappingA
MapViewOfFile

Noizz.be

Legacy Member
Ik heb nog een vraagje:

Is het mogelijk om het programma te laten afsluiten zonder dat de gebruiker op het kruisje moet klikken?

dus in het menu heb je:

1. quiz spelen
2. scores
3. vragen administratie
4. quiz afsluiten

Als mensen 4 ingeven krijgen ze nog een soort eind-splash'ke te zien. En daarna mag het programma dus afgesloten worden.

ik dacht, close() of exit() maar blijkbaar werkt dat niet/doet dat iets anders

Alvast bedankt
Noizz

wlibaers

Legacy Member
Silenger.BE zei:
Waarom zou men in c niet kunnen gebruik maken van memorymapping,
is gewoon een windows api aanroepen om een buffer te maken...

CreateFileMappingA
MapViewOfFile

Natuurlijk kan dat, maar is geen standaard C. Dat kan van belang zijn als je het programma later op een ander OS wil gebruiken. Natuurlijk, in het geval van een Windows-spel zullen er wel meer van die dingen in zitten.



Noizz.be zei:
Als mensen 4 ingeven krijgen ze nog een soort eind-splash'ke te zien. En daarna mag het programma dus afgesloten worden.

ik dacht, close() of exit() maar blijkbaar werkt dat niet/doet dat iets anders

Alvast bedankt
Noizz

Win32 API? Dat kruisje stuurt een WM_CLOSE bericht naat het venster, als je daar zelf niets mee doet zal DefWindowProc dat venster sluiten en een WM_DESTROY sturen, gewoonlijk wordt dan PostQuitMessage gebruikt om een WM_QUIT naar de message loop te sturen, waardoor GetMessage de waarde nul oplevert, wat in een typisch Win32 programma betekent dat WinMain eindigt.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan