I have a little test program looking for a way to best compare strings from argv.
If strncmp compares upto 'n' chars unless it hits a '\0', it will return a succesful compare for strings like "foo" against "foobar" as it reaches a '\0' after the second 'o' and exits.
So my question is, what is the safest way to compare 2 full strings, returning an incorrect compare if they are not 100% identical.
Test program:
Result:Code:#include <windows.h> #include <tchar.h> #include <stdio.h> TCHAR Protocols[][5] = { _T("IP"), _T("ICMP"), _T("TCP"), _T("UDP") }; INT _tmain(INT argc, TCHAR *argv[]) { INT k; TCHAR Proto[5]; _tcsncpy(Proto, argv[1], sizeof(Proto)); for (k = 0; k < sizeof(Protocols) / sizeof(Protocols[0]); k++) { if ( _tcsnicmp( Proto, Protocols[k], _tcslen(Proto) ) == 0) _tprintf(_T("match found %s\n"), Protocols[k]); } return 0; }
This should not matchCode:c:\> test I match found IP match found ICMP



LinkBack URL
About LinkBacks


