C Programming language – code snippets 1
Posted by danielFeb 25
C programming Language – Code snippets
C Programming Language, 2nd Edition
Compiling and running the sample codes using gcc :
1 2 | gcc sample.c -o sample . /sample |
Chapter 1 – Introductory tutorial : Input/output, characters, strings
0. Hello World!
1 2 3 4 5 6 7 8 9 | #include<stdio.h> int main() { printf ( "Hello World\n" ); return 0; } |
1. Word counter
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | /* word counter */ #include<stdio.h> #define IN 1 //inside a word #define OUT 0 //outside a word int main() { int c,nl,nw,nc,state; state=OUT; nl=nw=nc=0; while ((c= getchar ())!=EOF) { ++nc; if (c== '\n' ) ++nl; if (c== ' ' || c == '\n' || c== '\t' ) state=OUT; else if (state==OUT) { state=IN; ++nw; } } printf ( "lines=%d words=%d characters=%d\n" ,nl,nw,nc); return 0; } |
2. Convert Fahrenheit to Celsius
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include<stdio.h> #define LOWER 0 #define UPPER 300 #define STEP 20 int main() { int fahr; for (fahr = LOWER; fahr <= UPPER; fahr=fahr + STEP) printf ( "%3d %6.1f\n" , fahr, (5.0/9.0)*(fahr-32)); return 0; } |
3. Count characters
1 2 3 4 5 6 7 8 9 10 11 | /* character counter */ #include<stdio.h> int main() { short int nc; for (nc=0; getchar ()!=EOF ; ++nc); printf ( "%d\n" ,nc); return 0; } |
4. Count characters by type – digits, white spaces etc.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | /* count digits, white space, others */ #include<stdio.h> int main() { int c,i,nwhite,nother; int ndigit[10]; nwhite=nother=0; for (i=0; i < 10; ++i) ndigit[i]=0; while ((c= getchar ())!=EOF) if (c>= '0' && c<= '9' ) ++ndigit[c- '0' ]; else if (c== ' ' || c== '\n' || c== '\t' ) ++nwhite; else ++nother; printf ( "digits=" ); for (i=0;i<10;++i) printf ( " %d" ,ndigit[i]); printf ( ",white space=%d, other=%d\n" ,nwhite,nother); return 0; } |
5. Copy input to output terminal
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | /* copy input to output 1 */ #include<stdio.h> int main() { int c; c = getchar (); while ( c!=EOF) { putchar (c); c = getchar (); } return 0; } |
6. Copy input to output terminal (shorter version)
1 2 3 4 5 6 7 8 9 10 | /* copy input to output */ #include<stdio.h> int main() { int c; while ((c= getchar ())!=EOF) putchar (c); return 0; } |
7. Print longest line
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | #include<stdio.h> #define MAXLINE 1000 /* maximum input line length */ int getline( char line[], int maxline); void copy( char to[], char from[]); /* print the longest input line */ int main() { int len; /* current line length */ int max; /* maximum length seen so far */ char line[MAXLINE]; /* current input line */ char longest[MAXLINE]; /*longest line saved here */ max=0; while ((len=getline(line,MAXLINE))>0) if (len>max) { max=len; copy(longest,line); } if (max>0) /*there was a line*/ printf ( "Longest Line from input is:\n%s\n" ,longest); printf ( "Line length is: %d characters\n" ,max); return 0; } /*getline: read a line into s, return length */ int getline( char s[], int lim) { int c,i; for (i=0; i<lim-1 && (c= getchar ())!=EOF && c!= '\n' ; ++i) s[i]=c; if (c== '\n' ) { s[i]=c; ++i; } s[i]= '\0' ; return i; } /*copy: copy 'from' into 'to'; assume 'to' is big enough */ void copy( char to[], char from[]) { int i; i=0; while ((to[i]=from[i]) != '\0' ) ++i; } |
8. Print longest line – improved
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | #include<stdio.h> #define MAXLINE 1000 /* maximum input line length */ int max; char line[MAXLINE]; char longest[MAXLINE]; int getline( char line[], int maxline); void copy( char to[], char from[]); /* print the longest input line */ int main() { int len; /* current line length */ extern int max; /* maximum length seen so far */ extern char longest[MAXLINE]; /*longest line saved here */ max=0; while ((len=getline(line,MAXLINE))>0) if (len>max) { max=len; copy(longest,line); } if (max>0) /*there was a line*/ printf ( "Longest Line from input is:\n%s\n" ,longest); printf ( "Line length is: %d characters\n" ,max); return 0; } /*getline: read a line into s, return length */ int getline( char s[], int lim) { int c,i; extern char line[]; for (i=0; i<lim-1 && (c= getchar ())!=EOF && c!= '\n' ; ++i) s[i]=c; if (c== '\n' ) { s[i]=c; ++i; } s[i]= '\0' ; return i; } /*copy: copy 'from' into 'to'; assume 'to' is big enough */ void copy( char to[], char from[]) { int i; extern char line[], longest[]; i=0; while ((to[i]=from[i]) != '\0' ) ++i; } |
9. Power function
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include<stdio.h> int power( int m, int n); /* test power function */ int main() { int i; for (i=0; i<10; ++i) printf ( "%d %d %d\n" ,i,power(2,i),power(-3,i)); return 0; } int power( int base, int n) { int i,p=1; for (i=1;i<=n;++i) p*=base; return p; } |
10. Reverse string
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #include<stdio.h> #define MAXLINE 1000 int size=0; void reverse( char line[], int lim); int main() { extern int size; char line[MAXLINE]; reverse(line,MAXLINE); while (size) putchar (line[--size]); printf ( "\n" ); return 0; } void reverse( char line[], int lim) { extern int size; int c; while ((c= getchar ())!=EOF ) line[size++]=c; line[size]= '\0' ; } |
11. Get digits only
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include<stdio.h> int atoi ( char s[]); int main() { char str[]= "12a4c5 " ; int i=0,n=0; while (str[i]!= '\0' ) { if (str[i]>= '0' && str[i]<= '9' ) { n=10*n+(str[i]- '0' ); i++; } else { i++; continue ; } } printf ( "number=%d\n" ,n); return 0; } |
12. Fahrenheit to Celsius table
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | /* print Fahrenheit-Celsius table for fahr =0,20,40,....,300 */ #include<stdio.h> int main() { int fahr, celsius; int lower, upper, step; lower = 0; upper = 300; step = 20; fahr = lower; while ( fahr <= upper) { celsius = 5 * (fahr - 32) / 9; printf ( "%d\t%d\n" , fahr, celsius); fahr = fahr + step; } return 0; } |
Reference –
https://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628#reader_0131103628
10 comments
You must be logged in to post a comment.