<< Chapter < Page Chapter >> Page >

Write the program opens the file called myfile.txt, and counts the number of characters that it contains by reading all of them one by one. Finally the total amount of bytes is printed out.

#include<stdio.h>int main () {FILE * fp; long n = 0;fp = fopen ("myfile.txt","rb"); if (fp==NULL) printf ("Error opening file");else {while (!feof(fp)) { fgetc (fp);n++; }fclose (fp); printf ("Total number of bytes: %d\n",n);} return 0;}
Got questions? Get instant answers now!

Opens a file called input.txt which has some random text (less than 200 characters), stores each character in an array, then spits them back out into another file called "output.txt" in reverse order:

#include<stdio.h>int main() { char c; /* declare a char variable */char name[200]; /* Initialize array of total200 for characters */ FILE *f_input, *f_output; /* declare FILE pointers */int counter = 0; /* Initialize variable for counter to zero */ f_input = fopen("input.txt", "r");/* open a text file for reading */ if(f_input==NULL) {printf("Error: can't open file.\n"); return 1;} else {while(1) { /* loop continuously */ c = fgetc(f_input); /* fetch the next character */if(c==EOF) { /* if end of file reached, break out of loop */break; }else if (counter<200) { /* else put character into array */ name[counter]= c; counter++; /* increment the counter */} else {break; }} fclose(f_input); /* close input file */f_output = fopen("output.txt", "w"); /* create a text file for writing */if(f_output==NULL) { printf("Error: can't create file.\n");return 1; }else { counter--; /* we went one too step far */while(counter>= 0) { /* loop while counter's above zero */ fputc(name[counter], f_output); /* write character into output file */counter--; /* decrease counter */ }fclose(f_output); /* close output file */ printf("All done!\n");return 0; }} }
Got questions? Get instant answers now!

Reading one character at a time can be a little inefficient, so we can use fgets to read one line at a time. The fgets() function prototype is as follows.

char *fgets(char *str, int num, FILE *fp);

The fgets() function reads characters from the file associated with fp into a string pointed to by str until num-1 characters have been read, a newline character is encountered, or the end of the file is reached. The string is null-terminated and the newline character is retained.

Return value: the function returns str if successful and a null pointer if an error occurs.

You can't use an !=EOF check here, as we're not reading one character at a time (but you can use feof).

Create a file called myfile.txt in Notepad, include 3 lines and put tabs in the last line.

111 222 333 444 555 666777 888 999 #include<stdio.h>int main() {char c[10]; /* declare a char array */FILE *file; /* declare a FILE pointer */ file = fopen("myfile.txt", "r");/* open a text file for reading */ if(file==NULL){ printf("Error: can't open file.\n");/* fclose(file); DON'T PASS A NULL POINTER TO fclose !! */return 1; }else {printf("File opened successfully. Contents:\n\n");while(fgets(c, 10, file)!=NULL) { /* keep looping until NULL pointer... */printf("String: %s", c); /* print the file one line at a time */} printf("\n\nNow closing file...\n");fclose(file); return 0;} }
Got questions? Get instant answers now!

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Introduction to computer science. OpenStax CNX. Jul 29, 2009 Download for free at http://cnx.org/content/col10776/1.1
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Introduction to computer science' conversation and receive update notifications?

Ask