<<

Reference Card (ANSI) Constants Flow of Control long (suffix) or l statement terminator ; Program Structure/Functions float (suffix) or f block delimeters { } type fnc(type1,. . . ) function declarations exponential form exit from switch, while, do, for break type name external variable declarations octal (prefix zero) 0 next iteration of while, do, for continue main() { main routine (prefix zero-ex) 0x or 0X go to goto label declarations declarations character constant (char, octal, hex) 'a', '\ooo', '\xhh' label label: statements newline, cr, tab, backspace \, \, \, \ return value from function return expr } special characters \\, \?, \', \" Flow Constructions type fnc(arg1,. . . ) { function definition string constant (ends with '\0') "abc. . . de" if statement if (expr) statement declarations local variable declarations else if (expr) statement statements Pointers, Arrays & Structures else statement return value; declare pointer to type type *name while statement while (expr) statement } declare function returning pointer to type type *f() /* */ for statement for (expr 1; expr2; expr3) comments declare pointer to function returning type type (*pf)() statement main(int argc, char *argv[]) main with args generic pointer type void * do statement do statement exit(arg) terminate execution null pointer NULL while(expr ); object pointed to by pointer *pointer switch statement switch (expr) { name &name address of object case const1: statement1 break; include file #include <filename> array name[dim] case const2: statement2 break; include user file #include "filename" multi-dim array name[dim1][dim2]. . . default: statement replacement text #define name text Structures } replacement macro #define name(var) text struct tag { structure template Example. #define max(A,B) ((A)>(B) ? (A) : (B)) declarations declaration of members ANSI Standard Libraries undefine #undef name }; quoted string in replace # create structure struct tag name concatenate args and rescan ## member of structure from template name.member conditional execution #if, #else, #elif, #endif member of pointed to structure pointer -> member is name defined, not defined? #ifdef, #ifndef Example. (*). and p->x are same Character Class Tests name defined? defined(name) single value, multiple type structure union alphanumeric? isalnum(c) line continuation char \ bit field with b bits member : b alphabetic? isalpha(c) control character? iscntrl(c) Data Types/Declarations Operators (grouped by precedence) decimal digit? isdigit(c) character (1 byte) char structure member operator name.member printing character (not incl space)? isgraph(c) integer int structure pointer pointer->member lower case ? islower(c) float (single precision) float printing character (incl space)? isprint(c) increment, decrement ++, -- float (double precision) double printing char except space, letter, digit? ispunct(c) plus, minus, logical not, bitwise not +, -, !, ~ short (16 bit integer) short space, formfeed, newline, cr, tab, vtab? isspace(c) indirection via pointer, address of object *pointer, &name long (32 bit integer) long upper case letter? isupper(c) cast expression to type (type) expr positive and negative signed hexadecimal digit? isxdigit(c) size of an object sizeof only positive unsigned convert to lower case? tolower(c) pointer to int, float,. . . *int, *float,. . . multiply, divide, modulus (remainder) *, /, % convert to upper case? toupper(c) enumeration constant enum add, subtract +, - constant (unchanging) value const String Operations declare external variable extern left, right shift [bit ops] <<, >> ,t are strings, cs,ct are constant strings register variable register comparisons >, >=, <, <= length of s strlen(s) local to source file static comparisons ==, != copy ct to s strcpy(s,ct) no value void bitwise and & up to n chars strncpy(s,ct,n) structure struct bitwise ^ concatenate ct after s strcat(s,ct) create name by typename up to n chars strncat(s,ct,n) size of an object (type is size_t) sizeof object bitwise or (incl) | compare cs to ct strcmp(cs,ct) size of a data type (type is size_t) sizeof(type name) logical and && only first n chars strncmp(cs,ct,n) logical or || pointer to first c in cs strchr(cs,c) Initialization pointer to last c in cs strrchr(cs,c) conditional expression expr 1 ? expr2 : expr 3 initialize variable type name=value copy n chars from ct to s memcpy(s,ct,n) initialize array type name[]={value 1,. . . } assignment operators +=, -=, *=, . . . copy n chars from ct to s (may overlap) memmove(s,ct,n) initialize char string char name[]="string" expression evaluation separator , compare n chars of cs with ct memcmp(cs,ct,n) pointer to first c in first n chars of cs memchr(cs,c,n) Unary operators, conditional expression and assignment oper- put c into first n chars of cs memset(s,c,n) ators group right to left; all others group left to right.

c 1999 Joseph H. Silverman Permissions on back. v1.3 1 2 3 C Reference Card (ANSI) Standard Utility Functions Integer Type Limits absolute value of int n abs(n) The numbers given in parentheses are typical values for the Input/Output absolute value of long n labs(n) constants on a 32-bit Unix system. quotient and remainder of ints n, div(n,d) CHAR_BIT bits in char (8) Standard I/ retursn structure with div_t.quot and div_t.rem CHAR_MAX max value of char (127 or 255) standard input stream stdin quotient and remainder of longs n,d ldiv(n,d) CHAR_MIN min value of char (−128 or 0) standard output stream stdout returns structure with ldiv_t.quot and ldiv_t.rem INT_MAX max value of int (+32,767) standard error stream stderr pseudo-random integer [0,RAND_MAX] rand() INT_MIN min value of int (−32,768) end of file EOF set random seed to n srand(n) LONG_MAX max value of long (+2,147,483,647) get a character getchar() terminate program execution exit(status) LONG_MIN min value of long (−2,147,483,648) print a character putchar(chr ) pass string s to system for execution system(s) SCHAR_MAX max value of signed char (+127) print formatted data printf("format ",arg 1,. . . ) Conversions SCHAR_MIN min value of signed char (−128) print to string s sprintf(s,"format ",arg 1,. . . ) convert string s to double atof(s) SHRT_MAX max value of short (+32,767) read formatted data scanf("format ",&name1,. . . ) convert string s to integer atoi(s) SHRT_MIN min value of short (−32,768) read from string s sscanf(s,"format ",&name 1,. . . ) convert string s to long atol(s) UCHAR_MAX max value of unsigned char (255) read line to string s (< max chars) gets(s,max) convert prefix of s to double strtod(s,endp) UINT_MAX max value of unsigned int (65,535) print string s puts(s) convert prefix of s (base b) to long strtol(s,endp,b) ULONG_MAX max value of unsigned long (4,294,967,295) File I/O same, but unsigned long strtoul(s,endp,b) USHRT_MAX max value of unsigned short (65,536) declare file pointer FILE *fp Storage Allocation pointer to named file fopen("name","mode") allocate storage malloc(size), calloc(nobj,size) Float Type Limits modes: r (read), (write), a (append) change size of object realloc(pts,size) FLT_RADIX radix of exponent rep (2) get a character getc(fp) deallocate space free(ptr) FLT_ROUNDS floating point rounding mode write a character putc(chr ,fp) Array Functions FLT_DIG decimal digits of precision (6) write to file fprintf(fp,"format",arg 1,. . . ) 5 search array for key bsearch(key,array,n,size,cmp()) FLT_EPSILON smallest x so 1.0 + x =6 1.0 (10 ) read from file fscanf(fp,"format",arg 1,. . . ) − sort array ascending order qsort(array,n,size,cmp()) FLT_MANT_DIG number of digits in mantissa close file fclose(fp) 37 FLT_MAX maximum floating point number (10 ) non-zero if error ferror(fp) Time and Date Functions FLT_MAX_EXP maximum exponent non-zero if EOF feof(fp) 37 FLT_MIN minimum floating point number (10 ) read line to string s (< max chars) fgets(s,max,fp) processor time used by program clock() − FLT_MIN_EXP minimum exponent write string s fputs(s,fp) Example. clock()/CLOCKS_PER_SEC is time in seconds current calendar time time() DBL_DIG decimal digits of precision (10) Codes for Formatted I/O: "%-+ 0w.pmc" 9 - left justify time2-time1 in seconds (double) difftime(time2 ,time1) DBL_EPSILON smallest x so 1.0 + x =6 1.0 (10− ) arithmetic types representing times clock_t,time_t DBL_MANT_DIG number of digits in mantissa + print with sign 37 space print space if no sign structure type for calendar time comps tm DBL_MAX max double floating point number (10 ) tm_sec seconds after minute DBL_MAX_EXP maximum exponent 0 pad with leading zeros 37 w min field width tm_min minutes after hour DBL_MIN min double floating point number (10− ) p precision tm_hour hours since midnight DBL_MIN_EXP minimum exponent conversion character: tm_mday day of month h short, l long, L long double tm_mon months since January c conversion character: tm_year years since 1900 d,i integer u unsigned tm_wday days since Sunday c single char s char string tm_yday days since January 1 f double e,E exponential tm_isdst Daylight Savings Time flag o octal x,X hexadecimal convert local time to calendar time mktime(tp) p pointer n number of chars written convert time in tp to string asctime(tp) ,G same as f or e,E depending on exponent convert calendar time in tp to local time ctime(tp) convert calendar time to GMT gmtime(tp) Variable Argument Lists convert calendar time to local time localtime(tp) declaration of pointer to arguments va_list name; format date and time info strftime(s,smax,"format ",tp) initialization of argument pointer va_start(name,lastarg) tp is a pointer to a structure of type tm lastarg is last named parameter of the function access next unamed arg, update pointer va_arg(name,type) Mathematical Functions call before exiting function va_end(name) Arguments and returned values are double trig functions sin(x), cos(x), tan(x) inverse trig functions asin(x), acos(x), atan(x) arctan(/x) atan2(y,x) hyperbolic trig functions sinh(x), cosh(x), tanh(x) May 1999 v1.3. Copyright c 1999 Joseph H. Silverman exponentials & logs exp(x), log(x), log10(x) Permission is granted to make and distribute copies of this card pro- exponentials & logs (2 power) ldexp(x,n), frexp(x,*e) vided the copyright notice and this permission notice are preserved on division & remainder modf(x,*ip), fmod(x,y) all copies. powers pow(x,y), sqrt(x) Send comments and corrections to .H. Silverman, Math. Dept., Brown rounding ceil(x), floor(x), fabs(x) Univ., Providence, RI 02912 USA. [email protected] 4 5 6