Tom Kelliher, CS17
May 13, 1996
The sizeof() function.
Collating sequence:
How the characters in a character set ``compare'' to each other.
ASCII collating sequence:
0 nul 1 soh 2 stx 3 etx 4 eot 5 enq 6 ack 7 bel 8 bs 9 ht 10 nl 11 vt 12 np 13 cr 14 so 15 si 16 dle 17 dc1 18 dc2 19 dc3 20 dc4 21 nak 22 syn 23 etb 24 can 25 em 26 sub 27 esc 28 fs 29 gs 30 rs 31 us 32 sp 33 ! 34 " 35 # 36 $ 37 % 38 & 39 ' 40 ( 41 ) 42 * 43 + 44 , 45 - 46 . 47 / 48 0 49 1 50 2 51 3 52 4 53 5 54 6 55 7 56 8 57 9 58 : 59 ; 60 < 61 = 62 > 63 ? 64 @ 65 A 66 B 67 C 68 D 69 E 70 F 71 G 72 H 73 I 74 J 75 K 76 L 77 M 78 N 79 O 80 P 81 Q 82 R 83 S 84 T 85 U 86 V 87 W 88 X 89 Y 90 Z 91 [ 92 \ 93 ] 94 ^ 95 _ 96 ` 97 a 98 b 99 c 100 d 101 e 102 f 103 g 104 h 105 i 106 j 107 k 108 l 109 m 110 n 111 o 112 p 113 q 114 r 115 s 116 t 117 u 118 v 119 w 120 x 121 y 122 z 123 { 124 | 125 } 126 ~ 127 del
Traditionally, character data is stored in char variables, but int formal parameters are used.
The conversion is automatic.
chars can be used alongside other types in arithmetic expressions.
This function, if passed an upper case character, returns the lower case equivalent. Any other character is returned as-is.
Since a--z and A--Z are adjacent in the collating sequence and the lowercase letters are after the uppercase letters, we can convert an uppercase letter to the corresponding lowercase letter just by adding the difference of 'a' and 'A'.
int tolower(int c) { if ('A' <= c && c <= 'Z') return c + 'a' - 'A'; else return c; }
Return 1 if int argument is an ASCII digit, otherwise return 0.
int isdigit(int c) { return '0' <= c && c <= '9'; }
A number must be converted from a character sequence to a numeric value.
Numbers are read from most significant digit to least significant digit, so we multiply the ``number so far'' by 10 every time we read a digit.
To convert the ASCII code for a digit to a numeric value, subtract '0' from the ASCII character.
int getNumber(void) { int value = 0; char c; // cin.get() returns one character from cin. while (isdigit(c = cin.get())) value = 10 * value + c - '0'; cin.unget(); // Puts last character back on cin. return value; }
Assume:
char c;
cin >> c;
--- skips whitespace.
cin.get(c);
, c = cin.get();
--- doesn't skip
whitespace.
cout << c
--- prints the ASCII character corresponding to
c's value.
cout.put(c)
--- ditto.
cin.eof()
--- end of file.
Must include ctype.h.
int isdigit(int c)
int isalpha(int c)
int isspace(int c)
int toupper(int c)
A sequence of characters terminated by a null character
('\0'
).
Assume:
const int LINE_LENGTH = 80; char s[LINE_LENGTH];
cin >> s;
--- reads next word into s.
cin.getline(s, LINE_LENGTH);
--- reads an entire line (upto
LINE_LENGTH
characters) into s.
cin.get()
similar, does not remove newline at end of line.
cout << s;
--- output a string.
Prototype:
istream::getline(char in[], int max, int term = '\n');
These functions are provided in string.h.
Write the functions:
int strlen(const char s[])
(same as int strlen(const char* s)
)
char* strcat(char s[], const char append[])
char* strchr(const char* s, int c)
int strcmp(const char s1[], const char s2[])