String Handling Summary:
String is an Array ending in NULL - ‘\0’
string.h and stdlib.h; - string functions
ctype.h; - character functions
Initialize using array or pointer notation:
·        
char *s = "abc"; 
· char yourString[11] = "Do Be Do";
· char myString[] = "Do Be Do";
Copying strings:
·        
Not: s = “Hello” 
· Instead, strcpy or strncpy or sprintf
Comparing strings:
·        
Not s1 == s2
· Instead strcmp or strncmp ; 0 = equal;
Length:
· strlen – up to first null
· printf: remember %s prints the string up to the null; watch nulls inside strings or missing null at end of string
Extract parts from string: sscanf
Convert string to number:
· atoi – returns an integer stopping at the first non digit
· strtod, strtol,strtoul – send both a pointer to the string and a pointer to a pointer to a string. It returns a pointer to the unconverted portion of first string.
Command line arguments: character array, with 0 as program path
Read String from Standard Input:
· getchar: get characters one at a time until equal EOF integer (waits for Enter)
· fgets: read one string from input, up to newline character, appending NULL
· scanf: remember “%19s” to not get to limit input, and you place the NULL
· scanf_s: safer, pass the length
Write string to Output:
· putchar to put a single character and
· puts to print one unformatted string
·        
printf –
formatted output
List:
| Library | Function | Purpose | 
| string.h | char *strcpy(
  char *s1, const char *s2 ) |  Copies string s2 into array s1. The value of
  s1 is returned. | 
| string.h | char *strncpy(
  char *s1, const char *s2, size_t n ) |  Copies at most n characters of string s2
  into array s1. The value of s1 is returned. | 
| string.h | char *strcat(
  char *s1, const char *s2 ) |  Appends string s2 to array s1. The first character
  of s2 overwrites the terminating null character of s1. The value of s1 is
  returned. | 
| string.h | char *strncat(
  char *s1, const char *s2, size_t n ) |  Appends at most n characters of string s2 to
  array s1. The first character of s2 overwrites | 
| string.h | int strcmp( const char *s1, const char *s2 ) |  Compares the string s1 with the string s2.
  The function returns 0, less than 0 or greater than 0 if s1 is equal to, less
  than or greater than s2, respectively. | 
| string.h | int strncmp( const char *s1, const char *s2, size_t n ) |  Compares up to n characters of the string s1
  with the string s2. The function returns 0, less than 0 or greater | 
| Stdio.h | int getchar( void ) |  Inputs the next character from the standard
  input and returns it as an integer. | 
| Stdio.h | char *fgets(
  char *s, int n, FILE *stream) | Inputs characters from
  the specified stream into the array s until a newline or end-of-file
  character is encountered, or until n - 1 bytes are read.
  In this chapter, we specify the stream as stdin—the
  standard input stream, which is typically used to read characters from the
  keyboard. A terminating null character is appended to the array. Returns the
  string that was read into s. | 
| Stdio.h | int putchar( int c ) |  Prints the character stored in c and returns
  it as an integer. | 
| Stdio.h | int puts( const char *s ) |  Prints the string s followed by a newline
  character. Returns a non-zero integer if successful,
  or EOF if an error occurs. | 
| Stdio.h | int sprintf( char *s, const char *format, ... ) |  Equivalent to printf,
  except the output is stored in the array s instead of printed on the screen.
  Returns the number of characters written to s, or EOF if an error occurs. | 
| Stdio.h | int sscanf( char *s, const char *format, ... ) |  Equivalent to scanf,
  except the input is read from the array s rather than from the keyboard.
  Returns the number of items successfully read by the function,
  or EOF if an error occurs. | 
| Stdlib.h | double atof( const char *nPtr
  ) |  Converts the string nPtr
  to double. | 
| Stdlib.h | int atoi( const char *nPtr
  ) |  Converts the string nPtr
  to int. | 
| Stdlib.h | long atol( const char *nPtr
  ) |  Converts the string nPtr
  to long int. | 
| Stdlib.h | double strtod( const char *nPtr,
  char **endPtr
  ) | Converts the string nPtr to double. | 
| Stdlib.h | long strtol( const char *nPtr,
  char **endPtr,
  int base ) | Converts the string nPtr to long. | 
| Stdlib.h | unsigned long strtoul( const char *nPtr,
  char **endPtr,
  int base ) | Converts the string nPtr to unsigned long. | 
| Ctype.h | int isdigit( int c ) |  Returns a true value if c is a digit and 0
  (false) otherwise. | 
| Ctype.h | int isalpha( int c ) |  Returns a true value if c is a letter and 0
  otherwise. | 
| Ctype.h | int isalnum( int c ) |  Returns a true value if c is a digit or a
  letter and 0 otherwise. | 
| Ctype.h | int isxdigit( int c ) |  Returns a true value if c is a hexadecimal
  digit character and 0 | 
| Ctype.h | int islower( int c ) |  Returns a true value if c is a lowercase
  letter and 0 otherwise. | 
| Ctype.h | int isupper( int c ) |  Returns a true value if c is an uppercase
  letter and 0 otherwise. | 
| Ctype.h | int tolower( int c ) |  If c is an uppercase letter, tolower returns c as a lowercase letter. | 
| Ctype.h | int toupper( int c ) |  If c is a lowercase letter, toupper returns c as an uppercase letter. | 
| Ctype.h | int isspace( int c ) |  Returns a true value if c is a white-space
  character—newline ('\n'), space (' '),
  form feed ('\f'), carriage return ('\r'), horizontal tab ('\t') or vertical
  tab ('\v')—and 0 otherwise | 
Prototypes from: Dietel, Paul and Harvey Dietel. C How to Program. New York: Pearson, 2013