Sophie Dexter
/
Just4Trionic
Just4Trionic - CAN and BDM FLASH programmer for Saab cars
strings.cpp@0:e0b964252a05, 2010-05-19 (annotated)
- Committer:
- Just4pLeisure
- Date:
- Wed May 19 12:39:18 2010 +0000
- Revision:
- 0:e0b964252a05
- Child:
- 1:d5452e398b76
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Just4pLeisure | 0:e0b964252a05 | 1 | /******************************************************************************* |
Just4pLeisure | 0:e0b964252a05 | 2 | |
Just4pLeisure | 0:e0b964252a05 | 3 | Strings.cpp - By Sophie Dexter, April 2010 |
Just4pLeisure | 0:e0b964252a05 | 4 | |
Just4pLeisure | 0:e0b964252a05 | 5 | This C++ module provides functions for working with 'strings' of ascii 'char's |
Just4pLeisure | 0:e0b964252a05 | 6 | |
Just4pLeisure | 0:e0b964252a05 | 7 | C++ should have functions like these, but it doesn't seem to so these are my |
Just4pLeisure | 0:e0b964252a05 | 8 | own ones. They are very simple and do not check for any errors e.g. StrCpy |
Just4pLeisure | 0:e0b964252a05 | 9 | does not check that s1 is big enough to store all of s2. |
Just4pLeisure | 0:e0b964252a05 | 10 | |
Just4pLeisure | 0:e0b964252a05 | 11 | ******************************************************************************** |
Just4pLeisure | 0:e0b964252a05 | 12 | |
Just4pLeisure | 0:e0b964252a05 | 13 | WARNING: Use at your own risk, sadly this software comes with no guarantees. |
Just4pLeisure | 0:e0b964252a05 | 14 | This software is provided 'free' and in good faith, but the author does not |
Just4pLeisure | 0:e0b964252a05 | 15 | accept liability for any damage arising from its use. |
Just4pLeisure | 0:e0b964252a05 | 16 | |
Just4pLeisure | 0:e0b964252a05 | 17 | *******************************************************************************/ |
Just4pLeisure | 0:e0b964252a05 | 18 | #include "strings.h" |
Just4pLeisure | 0:e0b964252a05 | 19 | |
Just4pLeisure | 0:e0b964252a05 | 20 | // copies a string, s2, (array of chars) to another string, s1. |
Just4pLeisure | 0:e0b964252a05 | 21 | char *StrCpy(char *s1, char *s2) { |
Just4pLeisure | 0:e0b964252a05 | 22 | // while (*s1++ = *s2++); |
Just4pLeisure | 0:e0b964252a05 | 23 | while (*s2) |
Just4pLeisure | 0:e0b964252a05 | 24 | *s1++ = *s2++; |
Just4pLeisure | 0:e0b964252a05 | 25 | return s1; |
Just4pLeisure | 0:e0b964252a05 | 26 | } |
Just4pLeisure | 0:e0b964252a05 | 27 | |
Just4pLeisure | 0:e0b964252a05 | 28 | // returns the number of chars in a string |
Just4pLeisure | 0:e0b964252a05 | 29 | int StrLen(char *s) { |
Just4pLeisure | 0:e0b964252a05 | 30 | int x = 0; |
Just4pLeisure | 0:e0b964252a05 | 31 | while (*s++) |
Just4pLeisure | 0:e0b964252a05 | 32 | x++; |
Just4pLeisure | 0:e0b964252a05 | 33 | return (x); |
Just4pLeisure | 0:e0b964252a05 | 34 | } |
Just4pLeisure | 0:e0b964252a05 | 35 | |
Just4pLeisure | 0:e0b964252a05 | 36 | // checks s1 to see if it the same as s2 |
Just4pLeisure | 0:e0b964252a05 | 37 | // returns TRUE if there is a match |
Just4pLeisure | 0:e0b964252a05 | 38 | // WARNING actually only checks that s1 starts with s2! |
Just4pLeisure | 0:e0b964252a05 | 39 | bool StrCmp(char *s1, char *s2) { |
Just4pLeisure | 0:e0b964252a05 | 40 | // while (*s2 != '\0') { |
Just4pLeisure | 0:e0b964252a05 | 41 | while (*s2) { |
Just4pLeisure | 0:e0b964252a05 | 42 | if (*s1++ != *s2++) { |
Just4pLeisure | 0:e0b964252a05 | 43 | return FALSE; |
Just4pLeisure | 0:e0b964252a05 | 44 | } |
Just4pLeisure | 0:e0b964252a05 | 45 | } |
Just4pLeisure | 0:e0b964252a05 | 46 | return TRUE; |
Just4pLeisure | 0:e0b964252a05 | 47 | } |
Just4pLeisure | 0:e0b964252a05 | 48 | |
Just4pLeisure | 0:e0b964252a05 | 49 | // Converts lower case ascii letters a-z to upper case |
Just4pLeisure | 0:e0b964252a05 | 50 | // leaves other characters unchanged |
Just4pLeisure | 0:e0b964252a05 | 51 | char ToUpper(char c) { |
Just4pLeisure | 0:e0b964252a05 | 52 | if (c >= 'a' && c <= 'z') |
Just4pLeisure | 0:e0b964252a05 | 53 | c -= 32; |
Just4pLeisure | 0:e0b964252a05 | 54 | return c; |
Just4pLeisure | 0:e0b964252a05 | 55 | } |
Just4pLeisure | 0:e0b964252a05 | 56 | |
Just4pLeisure | 0:e0b964252a05 | 57 | // Converts upper case ascii letters A-Z to lower case |
Just4pLeisure | 0:e0b964252a05 | 58 | // leaves other characters unchanged |
Just4pLeisure | 0:e0b964252a05 | 59 | char ToLower(char c) { |
Just4pLeisure | 0:e0b964252a05 | 60 | if (c >= 'A' && c <= 'Z') |
Just4pLeisure | 0:e0b964252a05 | 61 | c += 32; |
Just4pLeisure | 0:e0b964252a05 | 62 | return c; |
Just4pLeisure | 0:e0b964252a05 | 63 | } |
Just4pLeisure | 0:e0b964252a05 | 64 | |
Just4pLeisure | 0:e0b964252a05 | 65 | // Converts ASCII numbers 0-9 and letters a-f (and A-F) to hex values 0x00-0x0F |
Just4pLeisure | 0:e0b964252a05 | 66 | // leaves other characters unchanged |
Just4pLeisure | 0:e0b964252a05 | 67 | // ASCII '0' is worth 0x30 so subtract 0x30 if ascii character is a number |
Just4pLeisure | 0:e0b964252a05 | 68 | // Lower case ASCII letter 'a' is worth 0x61, but we want this to be worth 0x0A |
Just4pLeisure | 0:e0b964252a05 | 69 | // Subtract 0x57 (0x61 + 0x0A = 0x57) from lower case letters |
Just4pLeisure | 0:e0b964252a05 | 70 | // Upper case ASCII letter 'A' is worth 0x41, but we want this to be worth 0x0A |
Just4pLeisure | 0:e0b964252a05 | 71 | // Subtract 0x37 (0x41 + 0x0A = 0x37) from upper case letters |
Just4pLeisure | 0:e0b964252a05 | 72 | |
Just4pLeisure | 0:e0b964252a05 | 73 | char *aToh(char *s) { |
Just4pLeisure | 0:e0b964252a05 | 74 | while (*s) { |
Just4pLeisure | 0:e0b964252a05 | 75 | if ((*s >= '0') && (*s <='9')) |
Just4pLeisure | 0:e0b964252a05 | 76 | *s -= '0'; |
Just4pLeisure | 0:e0b964252a05 | 77 | else if ((*s >= 'a') && (*s <='f')) |
Just4pLeisure | 0:e0b964252a05 | 78 | *s -= ('a' - 0x0A); |
Just4pLeisure | 0:e0b964252a05 | 79 | else if ((*s >= 'A') && (*s <='F')) |
Just4pLeisure | 0:e0b964252a05 | 80 | *s -= ('A' - 0x0A); |
Just4pLeisure | 0:e0b964252a05 | 81 | s++; |
Just4pLeisure | 0:e0b964252a05 | 82 | } |
Just4pLeisure | 0:e0b964252a05 | 83 | return s; |
Just4pLeisure | 0:e0b964252a05 | 84 | } |