main() { char st[20]; int i; /* accept a string */ printf("Enter a string : "); gets(st); /* display it in upper case */ for ( i = 0 ; st[i] != '\0'; i++) if ( st[i] >= 'a' && st[i] <= 'z' ) putch( st[i] - 32); else putch( st[i]); }
main() { char st[20]; int i; /* accept a string */ printf("Enter a string : "); gets(st); /* get length of the string */ for ( i = 0 ; st[i] != '\0'; i++) ; /* display it in reverse order */ for ( i -- ; i >= 0 ; i --) putch(st[i]); }
#include <stdio.h> main() { char st[20]; int i, count = 0; char ch; /* accept a string */ printf("Enter a string : "); gets(st); /* accept character */ printf("Enter a character : "); ch = getchar(); /* count */ for ( i = 0 ; st[i] != '\0'; i++) if ( st[i] >== ch) count ++; printf("No. of words : %d ", count); }
#include <stdio.h> main() { char st[20]; int i,count =0; /* accept a string */ printf("Enter a string : "); gets(st); /* count words */ for ( i = 0 ; st[i] != '\0'; i++) if ( st[i] == ' ' ) count ++; printf(" No. of words : %d", count + 1); }
#include <stdio.h> main() { char st[20]; int i; char sch,tch; /* accept a string */ printf("Enter a string : "); gets(st); /* accept source and target character */ printf("Enter source character : "); sch = getchar(); fflush(stdin); /* remove characters from keyboard buffer */ printf("Enter target character : "); tch = getchar(); /* display it in upper order */ for ( i = 0 ; st[i] != '\0'; i++) if ( st[i] == sch) st[i] = tch; printf(" String after conversion : %s ", st); }
main() { char st[10][20]; int i, hpos=0; /* take strings */ for (i = 0 ; i < 10 ; i ++) { printf("Enter a string :"); gets( st[i]); if ( strcmp(st[i],st[hpos]) > 0 ) hpos = i; } printf(" %s is the biggest string", st[hpos]); }
int nextodd(int num) { if ( num % 2 == 0 ) return num + 1; else return num + 2; }
void lowerstring( char st[100]) { int i; for ( i = 0 ; st[i] != '\0'; i ++) putch( tolower( st[i])); }
int prime(int num) { int i; for ( i = 0 ; i <= num/2 ; i ++) if ( num % i == 0 ) /* not a prime number */ return 0; /* if control comes here, it means prime number */ return 1; }
int nodigits( char st[100]) { int count = 0, i; for ( i = 0 ; st[i] != '\0'; i ++) if ( isdigit (st[i]) ) count ++; return count; }
main() { printf(" Fact : %d ", fact(4)); } int fact(int n) { if ( n > 1 ) return ( n * fact( n-1)); else return 1; }
fun() { int i; if ( ) { int i; /* outer i is hidden here */ } }
main() { int n1,n2; printf("Enter two values : "); scanf("%d%d", &n1,&n2); printf("Values %d %d ", n1,n2); printf("\n Addresses %p %p", &n1,&n2); }
void settosmall(int * n1, int * n2) { if ( *n1 < *n2 ) *n2 = *n1; else *n1 = * n2; }
void smallbig(int n1,int n2, int n3,int * big, int * small) { /* get biggest */ *big = n2 > n1 ? n2 : n1; *big = n3 > *big ? n3 : *big; /* get samllest */ *samll = n2 < n1 ? n2 : n1; *samll = n3 < *samll ? n3 : *small; } main() { int n1, n2, n3, small, big; smallbig(n1,n2,n3, &big, &small); }
void smallbig(int * ar,int * big, int * small) { int i; *big = *small = ar[0]; for( i = 1 ; i < 10 ; i ++) { if ( ar[i] > * big ) *big = ar[i]; if ( ar[i] < *small) *small = ar[i]; }
void settozeroes(int * ar) { int i; for( i = 0 ; i < 10 ; i ++) { ar[i] = 0; } }
#include <stdlib.h> main() { int a[20]; int * p; int i; clrscr(); /* fill array here */ for ( i = 0 ; i < 20 ; i ++) a[i] = random(100); /* display using in reverse order using array notaion */ for ( i = 19 ; i >= 0 ; i --) printf("%d ", a[i]); printf("\n Pointer \n"); /* display using in reverse order using pointer notaion */ p = &a[19]; /* make pointer pointing to 20th element */ for ( i = 19 ; i >= 0 ; i --, p-- ) printf("%d ", *p); printf("\n Array pointer \n"); /* display using in reverse order using pointer notaion using array */ for ( i = 19 ; i >= 0 ; i -- ) printf("%d ", *(a+i)); }
void sortarray( int * ar, int nel) { int i,j; /* sort array in descending order */ for ( i = 0 ; i < nel - 1 ; i++) { for ( j = i+1; j < nel ; j +=) { if ( ar[j] > ar[i]) { /* interchange */ temp = ar[j]; ar[j] = ar[i]; ar[i] = temp; } } /* end of j loop */ } /* end of i loop */ } main() { int ar[10]; int i, j, temp; for (i = 0 ; i < 10 ; i++) { printf("Enter number for [%d] element : ",i); scanf("%d", &ar[i]); } sortarray(ar,10); /* display sorted array */ for ( i = 0 ; i < 10 ; i++) { printf("%d\n", ar[i]); } }
void bigarray( int * a1, int * a2, int ** p) { int i,sum1,sum2; sum1 = 0; for ( i = 0 ; i < 10 ; i++) { sum1 += a1[i]; } /* end of i loop */ sum2 = 0; for ( i = 0 ; i < 10 ; i++) { sum2 += a2[i]; } /* end of i loop */ if ( sum1 > sum2 ) *p = a1; else *p = a2; } main() { int a1[]= { 110,20,30,40,50,30,30,30,2,22}; int a2[]= {21,20,30,40,60,29,39,28,24,1}; int *p; int i; clrscr(); /* pass address of pointer as pointer is to be modified */ bigarray(a1,a2,&p); /* display the big array */ for ( i = 0 ; i < 5 ; i ++) printf("%d ", p[i]); }
main() { int mn; char * months[] = {"January", "Feburary", "March", "April", "May", "June", "July", "August", "September","October", "November", "December"}; printf("Enter month number :"); scanf("%d",&mn); printf(" Month name : %s", months[ mn - 1]); }
#include <stdio.h> struct student { int no; char name[30]; int tm; }; main() { struct student s[10], temp; int i,j; for ( i = 0 ; i < 10 ; i ++) { printf("Enter student number : "); scanf("%d", & s[i].no); fflush(stdin); printf("Enter student name : "); gets( s[i].name); printf("Enter total marks : "); scanf("%d",& s[i].tm); } /* sort the array */ for ( i = 0 ; i < 9 ; i ++) for ( j = i + 1 ; j < 10 ; j ++) if ( s[i].tm > s[j].tm) { temp = s[i]; s[i] = s[j]; s[j] = temp; } /* display sorted details */ clrscr(); for ( i = 0 ; i < 10 ; i ++) { printf("\n %5d %-20s %5d", s[i].no, s[i].name, s[i].tm); } } /* end of main*/
struct time { int h,m,s; }; /* returns > 0 if t1 > t2 < 0 if t1 < t2 0 if t1 == t2 */ int compare(struct time t1, struct time t2) { return (t1.h * 60 * 60 + t1.m * 60 + t1.s) - (t2.h * 60 * 60 + t2.m * 60 + t2.s); } main() { struct time t[10], st; int i; /* accept 10 times */ for ( i = 0 ; i < 10 ; i ++) { printf("Enter time in hh:mm:ss format :"); scanf("%d:%d:%d", & t[i].h, &t[i].m, &t[i].s); } /* get the smallest time */ st = t[0]; for ( i = 1; i < 10 ; i ++) { if ( compare( t[i], st ) < 0 ) /* if time is less than smallest time */ st = t [i]; } printf("Smallest Time : %d:%d:%d", st.h, st.m, st.s); }
struct time { int h,m,s; }; struct time nextsecond(struct time t) { t.s ++; /* increment seconds */ if ( t.s > 59 ) { t.s = 0; t.m ++; if ( t.m > 59 ) { t.m = 0; t.h ++; if ( t.h > 23 ) t.h = 0; } } return t; }
You must use paraentheses to evaluate the expression correctly as . (member operator) has higher precedence than * (indirection operator).
In Structure declaration only members of the structure are declared. No space is allocated to member.
In Structure variable declaration, we declare a variable of the structure and that variable is allocated memory.
All members in a structure are allocated memory whereas only the largest member of a union is allocated memory.
The value is assigned to the item instead of the default value. If nothing is specified enum starts assigning from zero onwards.
typedef char * STRING;
In case of angle brakets (<>) C searches for the file only in standard include directory. In caes of double quotes C searches for header file in the current directory first and if it is not found then searches for the file in the standard include directory.
A macro will improve performance because it will not have the overheads of calling a function.
#define odd(n) n % 2
#include <stdio.h> #include <ctype.h> main() { char fn[30]; int ch; FILE * fp; printf("Enter filename :"); gets(fn); fp = fopen(fn,"r"); if ( fp == NULL) { printf("File not found."); exit(1); } while ( !feof(fp) ) { ch = fgetc(fp); if ( isupper(ch)) putchar(ch); } fclose(fp); } /* end of main */
#include <stdio.h> main() { char sfn[30],tfn[30]; int ch; FILE * sfp, * tfp; printf("Enter source filename :"); gets(sfn); printf("Enter target filename :"); gets(tfn); sfp = fopen(sfn,"r"); if ( sfp == NULL) { printf("Source file not found."); exit(1); } tfp = fopen(tfn,"w"); if ( tfp == NULL) { printf("Target file not found."); exit(1); } while ( !feof(sfp) ) { ch = fgetc(sfp); fputc(ch, tfp); } fcloseall(); /* close both the files */ } /* end of main */
#include <stdio.h> main() { char fn[30]; int ch; FILE * fp; int lines=0; printf("Enter filename :"); gets(fn); fp = fopen(fn,"r"); if ( fp == NULL) { printf("File not found."); exit(1); } while ( !feof(fp) ) { ch = fgetc(fp); if ( ch == '\n') lines ++; } fclose(fp); printf("No. of lines : %d", lines); } /* end of main */
#include <stdio.h> #include <ctype.h> main() { char sfn[30]; int ch; FILE * sfp, * tfp; printf("Enter source filename :"); gets(sfn); sfp = fopen(sfn,"r"); if ( sfp == NULL) { printf("Source file not found."); exit(1); } tfp = fopen("temp.txt","w"); if ( tfp == NULL) { printf("Temporary file creation failed."); exit(1); } while ( !feof(sfp) ) { ch = fgetc(sfp); fputc( tolower(ch), tfp); } fcloseall(); /* close both the files */ /* remove source file */ remove(sfn); /* rename temporary file to source file name */ rename("temp.txt", sfn); } /* end of main */
#include <stdio.h> main() { char line[100]; FILE * fp; fp = fopen("lines.txt","w"); if ( fp == NULL) { printf("LINES.TXT could not be created."); exit(1); } while (1) { printf("Enter a line and END to stop :"); gets(line); if ( strcmp(line,"END") == 0 ) break; fputs(line,fp); } fclose(fp); /* close the file */ } /* end of main */
#include <stdio.h> struct student { int sno; char name[30]; int tf, fp; }; main() { struct student s; FILE * fp; fp = fopen("student.dat","wb"); /* open in write and binary mode */ while(1) { fflush(stdin); printf("Enter student number [0 to stop]: "); scanf("%d", & s.sno); if ( s.sno == 0 ) break; fflush(stdin); printf("Enter student name : "); gets(s.name); printf("Enter total fee : "); scanf("%d", & s.tf); printf("Enter fee paid : "); scanf("%d", & s.fp); /* write record to file */ fwrite(&s,sizeof(s),1,fp); } fclose(fp); }
#include <stdio.h> struct student { int sno; char name[30]; int tf, fp; }; main() { struct student s; FILE * fp; int count; fp = fopen("student.dat","rb"); /* open in read and binary mode */ /* read record */ count = fread(&s,sizeof(s),1,fp); while( count != 0 ) { if ( s.tf > s.fp ) printf("%d %s %d %d ", s.sno, s.name, s.tf, s.fp); count = fread(&s,sizeof(s),1,fp); } fclose(fp); }
#include <stdio.h> struct student { int sno; char name[30]; int tf, fp; }; main() { struct student s; FILE * fp; int recno; fp = fopen("student.dat","rb"); /* open in read and binary mode */ /* read record number */ printf("Enter record number. Record number starts with 0 : "); scanf("%d",&recno); /* move to the record with the given record number */ fseek ( fp, sizeof(s) * recno , 0); /* read the record */ fread(&s,sizeof(s),1,fp); printf("%d %s %d %d ", s.sno, s.name, s.tf, s.fp); fclose(fp); }
#include <stdio.h> struct student { int sno; char name[30]; int tf, fp; }; main() { struct student s; FILE * fp; int recno; fp = fopen("student.dat","r+b"); /* open in update and binary mode */ /* read record number */ printf("Enter record number. Record number starts with 0 : "); scanf("%d",&recno); printf("Enter Amount paid : "); scanf("%d",&amt); /* move to the record with the given record number */ fseek ( fp, sizeof(s) * recno , 0); /* read the record */ fread(&s,sizeof(s),1,fp); /* update structure in memory */ s.fp += amt; /* move back to the previous record */ fseek ( fp, sizeof(s) * -1l, 1); /* write new record back to file */ fwrite(&s,sizeof(s),1,fp); printf("Updation is complete"); fclose(fp); }
#include <stdio.h> main(int argc, char * argv[] ) { int ch; FILE * sfp, * tfp; if ( argc < 3 ) { /* display syntax of the program. Assuming file name is LOWER.C */ printf("LOWER source target"); exit(1); } sfp = fopen(argv[1],"r"); if ( sfp == NULL) { printf("Source file not found."); exit(2); } tfp = fopen(tfn,"w"); if ( tfp == NULL) { printf("Target file not found."); exit(3); } while ( !feof(sfp) ) { ch = fgetc(sfp); fputc( tolower(ch), tfp); } fcloseall(); /* close both the files */ } /* end of main */
/* program to search for a string a file and display line where string is found along with line numbers */ #include <stdio.h> main() { FILE * fp; char line[100], word[30] , fn[30]; int ln=1; /* take input from user */ printf("Enter filename : "); gets(fn); printf("Enter string to search for : "); gets(word); /* open file */ fp = fopen(fn,"r"); ln = 1; while( !feof(fp)) { fgets(line,100,fp); if ( strstr(line,word) != NULL ) printf("%4d:%s", ln, line); ln++; } fclose(fp); }
#include <stdio.h> main(int argc, char * argv[] ) { int ch; FILE * sfp, * tfp; int i; if ( argc < 3 ) { /* display syntax of the program. Assuming file name is COPYALL.C */ printf("COPYALL target source ..."); exit(1); } /* open target file */ tfp = fopen(argv[1],"w"); if ( tfp == NULL) { printf("Target file open error."); exit(2); } for ( i = 2; i < argc ;i ++) { /* open source file */ sfp = fopen( argv[i], "r"); if ( sfp == NULL) { printf("Error while opening file %s ", argv[i]); exit(3); } while ( !feof(sfp) ) { ch = fgetc(sfp); fputc( ch, tfp); } /* close current source file */ fclose(sfp); } /* end of for loop */ fclose(tfp); /* close target file */ } /* end of main */
/* Take a collection of strings and store them in an array of char * Memory for strings is allocated dynamically */ main() { char * a[10]; char st[100]; int i; /* take 10 strings */ clrscr(); for ( i = 0 ; i < 5 ; i ++) { printf("Enter a string :"); gets(st); /* allocate memory for the given string */ a[i] = (char * ) malloc( strlen(st)); /* copy string into newly allocated space */ strcpy(a[i],st); } /* display all strings */ for ( i = 0 ; i < 5 ; i ++) puts( a[i]); }
#include <stdio.h> /* create a structure for node */ typedef struct node { char line[100]; struct node * prev; } NODE; main() { NODE * root= NULL ,*current; char fn[10],line[100]; FILE * fp; clrscr(); printf("Enter filename :"); gets(fn); fp = fopen(fn,"r"); while ( !feof(fp)) { fgets(line,100,fp); printf(line); current = (NODE * ) malloc(sizeof(NODE)); if ( current == NULL) { printf("Memory allocation error. "); exit(1); } /* copy data into node */ strcpy( current -> line, line); current -> prev = root; root = current; } /* end of while */ fclose(fp); /* display the content of the file */ current = root; while ( current != NULL) { printf(current-> line); current = current -> prev; } /* end of while */ } /* end of main */
/* take the content of the file and sort it */ #include#include struct node { char line[100]; struct node * next; } * root; struct node * findpos(char *); main() { struct node * cur, * prev; char fn[30],line[100]; FILE * fp; printf("Enter filename : "); gets(fn); fp = fopen(fn,"rt"); if ( fp == NULL) { printf("File not found. "); exit(1); } /* add a dummy node at the beginning */ cur = (struct node * ) malloc(sizeof(struct node )); cur -> next = NULL; cur->line[0] = '\0'; /* value is empty string */ root = cur; while ( fgets(line,100,fp) != NULL ) { cur = ( struct node * ) malloc( sizeof(struct node)); strcpy( cur-> line, line); prev = findpos(line); cur-> next = prev-> next; prev -> next = cur; } fclose(fp); /* display the list */ clrscr(); cur = root; while ( cur != NULL) { printf("%s", cur->line); cur = cur -> next; } } struct node * findpos( char * line) { struct node * cur, * prev; prev = root; cur = root -> next; while ( cur != NULL ) { if ( strcmp(cur-> line, line) > 0 ) break; prev = cur; cur = cur -> next; } return prev; }
#include <alloc.h> /* create a structure for node */ typedef struct node { char line[100]; struct node * next; } NODE; NODE * search(NODE * root, char name[20] ) { NODE * current; current = root; while ( current != NULL) { if ( strcmp( current-> line, name) == 0 ) return current; current = current -> next; } return NULL; /* value not found */ } /* end of function */