Archief - [c++] functie gezocht

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.

boony

Legacy Member
Ik ben opzoek naar een functie die kan kijken of er een bepaald iets in een string zit.

Dus if (functie("test","t"))

dus als test een t bevat

S3cT0r

Legacy Member
De functie strchr() doet wat jij wel (is wel gewoon C en gedefinieerd in stdio.h, maar volgens mij ook in windows.h als een wrapper rond een win functie), maar deze functie is zo gemakkelijk dat je het ook gewoon zelf kan uittypen:

Code:
int functie(const char *haystack, char needle) {
   --haystack;
   while (*++haystack) {
      if (*haystack == needle) return(1);
   }

   return(0);
}

Dat heb ik maar ff zomaar opgetypt, wss nog voor verbetering vatbaar, maar het geeft wel een idee.

*EDIT*: Ik heb net gemerkt dat jij 2 strings aan de functie voert, dan moet je de functie een klein beetje veranderen natuurlijk, of zoeken naar een al voorgemaakte functie (strstr), misschien leer je nog eens iets als je zelf probeert :D
succes.

boony

Legacy Member
bedankt! het werkt prima EDIT: idd met strstr :) (ben nieuw sinds gisteren en ken dus geen enkele functie, en google staat vol maar met niks nuttigs)

nog een klein probleempje ik gebruik

string welkomMSG = "Welcome to the x99 remote server.";

en dat wordt verzonden via winsock maar ik wil dat hij naar de volgende regel gaat. Als ik er \n achter zet gaat hij naar de volgende regel maar begint hij niet aan het begin

SlasZ

Legacy Member
S3cT0r zei:
De functie strchr() doet wat jij wel (is wel gewoon C en gedefinieerd in stdio.h, maar volgens mij ook in windows.h als een wrapper rond een win functie), maar deze functie is zo gemakkelijk dat je het ook gewoon zelf kan uittypen:

Code:
int functie(const char *haystack, char needle) {
   --haystack;
   while (*++haystack) {
      if (*haystack == needle) return(1);
   }

   return(0);
}

Dat heb ik maar ff zomaar opgetypt, wss nog voor verbetering vatbaar, maar het geeft wel een idee.

*EDIT*: Ik heb net gemerkt dat jij 2 strings aan de functie voert, dan moet je de functie een klein beetje veranderen natuurlijk, of zoeken naar een al voorgemaakte functie (strstr), misschien leer je nog eens iets als je zelf probeert :D
succes.

proficiat, waar heb jij leren programmeren... :naughty:
die code is zo lek als een zeef en kan zeer eenvoudig misbruikt worden om dingen te doen die het niet zou mogen.
Leer toch eens de arraybounds te checken zodat het niet mogelijk wordt om dingen in het geheugen te plaatsen die er niet horen te zijn.
Ik hoop dat je nooit voor een softwarebedrijf zal werken die commerciele software zal maken.
En iedereen maar klagen over bugs & virussen :doh:

Ik weet wel dat dit een simpel voorbeeldje was, maar iemand die niets weet over softwarebeveiliging neemt dit gewoon over zonder er bij na te denken.

S3cT0r

Legacy Member
Dit was dan ook maar gewoon een voorbeeldje van het simpele concept!

Btw: Welke enorme beveiligingsgaten zie jij hier soms in behalve het feit dat je segfault krijgt als je een niet null-terminated string aan de functie voert? Je kan hier evengoed een 'n' versie van maken (strcpy -> strncpy) en dat is dan weer veiliger, voor de rest zal ik moeten passen voor de wetenschap van enorme gaten.

P.S.: Ik heb leren programmeren uit een online tutorial, zoals alle andere computer gerelateerde dingen die ik ooit geleerd heb.

P.S.S.: Ik hoop wel dat ik ooit werk vind in de computer/programmeer-branche, en ik hoop niet dat jij geen werk vind, dat zou nogal hard zijn.

SlasZ

Legacy Member
Bij deze code is een segmentatiefout inderdaad het enigste wat fout kan lopen.
Bufferoverflows gebeuren enkel als een buffer gebruikt wordt (logisch :p)
Maar mijn punt blijft, altijd bounds checken op dynamische arrays, want enkel zo vermijd je moeilijk traceerbare fouten en securityholes.
Ik heb vroeger ook alles zelf geleerd via boeken en internet, maar na mijn opleiding realiseer ik me nu dat ik toch op veel vlakken fout bezig was.
En ik hoop natuurlijk dat je later werk vindt in die branche, alleen hoop ik dat je toch nog een degelijke opleiding krijgt :) Sorry als ik wat cru was.

dJeez

Legacy Member
Het boek "Secure Programming Cookbook" (site) is wat het security aspect betreft echt wel een aanrader voor C/C++ programmeurs.
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