A Little C Primer/C Quick Reference
Appearance
This section contains a sample program to give syntax examples for fundamental C statements, followed by a list of library routines. This list is very terse and simply provides reminders. If more details are needed, please refer to the previous chapters.
/* sample.c: a silly program to give syntax examples. */
#include <stdio.h> /* Include header file for console I/O. */
int f1( int p ); /* Function prototypes. */
long f2( void );
long g; /* Global variable. */
void main( int argc, char *argv[] )
{
float f; /* Declare variables. */
int ctr;
extern long g;
printf( "Arguments:\n\n" );
for( ctr = 0; ctr < argc; ctr++ )
{
puts( argv[ctr] );
}
printf( "\nFunction 1:\n\n" );
ctr = 0;
while( ctr < 5 )
{
printf( "%d\n", f1( ctr++ ) );
}
printf( "\nFunction 2:\n\n" );
ctr = 0;
do
{
g = ctr++;
printf( "%d\n", f2( ) );
}
while( ctr < 5 );
exit( 0 );
}
int f1( int p )
{
return( ( p < 3 ) ? p : p p );
}
long f2( void )
{
extern long g;
return( g g );
}
Console I/O -- #include <stdio.h>:
int printf( char *s, <varlist> ) > 0 // Print formatted string to stdout.
int scanf( char *s, *<varlist> ) != EOF // Read formatted data from stdin.
int putchar( int ch ) // Print a character to stdout.
int getchar() != EOF // Read a character from stdin.
int puts( char *s ) // Print string to stdout, add \n.
char *gets() != NULL // Read line from stdin (no \n).
PC console routines -- #include <conio.h>:
int getch() != 0 // Get a character from the keyboard (no Enter).
int getche() != 0 // Get a character from the keyboard and echo it.
int kbhit() != 0 // Check to see if a key has been pressed.
Format codes:
%h // short int (scanf() only)
%d // decimal integer
%ld // long decimal integer
%c // character
%s // string
%e // exponential floating-point
%f // decimal floating-point
%g // use %e or %f, whichever is shorter (printf() only)
%u // unsigned decimal integer
%o // unsigned octal integer
%x // unsigned hex integer
%10d // 10-character field width.
%-10d // Left-justified field.
%6.3f // 6-character field width, three digits of precision.
'\0NN' // character code in octal.
'\xNN' // character code in hex.
'\0' // null character.
File-I/O -- #include <stdio.h>:
FILE *fopen( char *f, char *mode ) != NULL // Create or open file.
int fclose( FILE *f ) // Close a file.
rewind( FILE *f ) // Rewind.
rename( char *old, char *new ) // Rename a file.
remove( char *name ) // Delete a file.
fseek( FILE *f, long offset, int origin) == 0 // Seek.
fprintf( FILE *f, char *fmt, <varlist> ) > 0 // Formatted write.
fscanf( FILE *f, char *fmt, &<varlist> ) != EOF // Formatted read.
fwrite( void *b, size_t s, size_t c, FILE *f ) > 0 // Unformatted write.
fread( void *b, size_t s, size_t c, FILE *f ) > 0 // Unformatted read.
putc( int c, FILE *f ) // Write character.
int getc( FILE *f ) != EOF // Read character.
fputs( char *s, FILE *f ) // Write a string.
fgets( char *s, int max, FILE *f) != NULL // Read a string.
sprintf( char *b, char *fmt, <varlist> ) // Print into string.
sscanf( char *b, char *fmt, &<varlist> ) > 0 // Scan string.
File modes:
r // Open for reading.
w // Open and wipe (or create) for writing.
a // Append -- open (or create) to write to end of file.
r+ // Open a file for reading and writing.
w+ // Open and wipe (or create) for reading and writing.
a+ // Open a file for reading and appending.
Offset values:
SEEK_SET // Start of file.
SEEK_CUR // Current location.
SEEK_END // End of file.
Math library -- #include <math.h>:
double sin( double x ) // Sine of x (in radians).
double cos( double x ) // Cosine of x.
double tan( double x ) // Tangent of x.
double asin( double x ) // Inverse sine of x.
double acos( double x ) // Inverse cosine of x.
double atan( double x ) // Inverse tangent of x.
double sinh( double x ) // Hyperbolic sine of x.
double cosh( double x ) // Hyperbolic cosine of x.
double tanh( double x ) // Hyperbolic tangent of x.
double exp( double x ) // Exponential function -- e^x.
double log( double x ) // Natural log of x.
double log10( double x ) // Base 10 log of x.
double pow( double x, double y ) // Power function -- x^y.
double sqrt( double x ) // Square root of x.
double ceil( double x ) // Integer >= x (returned as double).
double floor( double x ) // Integer <= x (returned as double).
double fabs( x ) // Absolute value of x.
Standard utility library -- #include <stdlib.h>:
double atof( char *nvalstr ) != 0 // Convert numeric string to double.
int atoi( char *nvalstr ) != 0 // Convert numeric string to int.
long atol( char *nvlastr ) != 0 // Convert numeric string to long.
int rand() // Generates pseudorandom integer.
srand( unsigned seed ) // Seed random-number generator.
exit( int status ) // Exits program.
int system( char *syscmd ) == 0 // Execute system program.
int abs( int n ) // Absolute value of int.
long labs( long n ) // Absolute value of long.
Time & date library -- #include <time.h>:
time_t time( time_t *timeptr ) // Current time count as long int.
char *ctime( time_t *timeptr ) // Current time & date string.
String function library -- #include <string.h>:
int strlen( char *s ) // Length.
strcpy( char *dst, char *src ) // Copy.
strncpy( char *dst, char *src, size_t n ) // Copy n characters max.
strcat( char *dst, char *s ) // Concatenate.
strncat( char *d, char *s, size_t n ) // Concatenate n characters.
strcmp( char *s1, char *s2 ) == 0 // Compare.
strncmp( char *s1, char *s2, size_t n ) == 0 // Compare n characters.
stricmp( char *s1, char *s2 ) == 0 // Compare, no case.
strnicmp( char *s1, char *s2, size_t n ) == 0 // Compare, no case, n chars.
char *strchr( char *s, int ch ) != NULL // Find first character.
char *strrchr( char *s, int ch ) != NULL // Find last character.
char *strstr( char *dst, char *src) != NULL // Find string.
char *strlwr( char *s ) // Lowercase.
char *strupr( char *s ) // Uppercase.
Character class test library -- #include <ctype.h>:
int isalnum( int c ) != 0 // Alpha / digit.
int isalpha( int c ) != 0 // Alpha.
int iscntrl( int c ) != 0 // Control character.
int isdigit( int c ) != 0 // Decimal digit.
int isgraph( int c ) != 0 // Printing character (except space).
int islower( int c ) != 0 // Lower-case.
int isprint( int c ) != 0 // Printing character (including space).
int ispunct( int c ) != 0 // Printing character but not space/alnum.
int isspace( int c ) != 0 // Space, FF, LF, CR, HT, VT.
int isupper( int c ) != 0 // Upper-case.
int isxdigit( int c ) != 0 // Hex digit.
int tolower( int c ) // Convert to lower case.
int toupper( int c ) // Convert to upper case.
Dynamic memory allocation -- #include <malloc.h>:
buf = (<type> *)malloc( (size_t)sizeof( <type> ) <array size>) != NULL
free( <type> *buf )