This article explains how you can write a C program to convert uppercase to lowercase and vice versa in a file. It also explains logic to convert uppercase characters to lowercase and vice versa in C program.
Logic to convert uppercase to lowercase characters and vice versa in the file:
- Open the source file in reading mode and get the file pointer in fptr. Also, check that file has been open successfully or not.
- Create a temporary file.
- Read a character from source file using c fgetc function.
- Convert uppercase characters to lowercase and vice versa.
- Write converted character to the temp file.
- Close both files and delete the source file.
- In the last, rename temporary file temp as the source file.
C code to convert uppercase to lowercase character in file
#include <stdio.h> #include <ctype.h> //Maximum size of the array #define MAX_SIZE 32 #define FILE_NAME "aticleworld.txt" //toggle file alphanumeric data void toggleFileData(FILE *fptr) { FILE *fpTmp = NULL; int ch = 0; //open the file fpTmp = fopen("tmp.txt", "w"); if(fpTmp == NULL) { printf("Error in creating tmp file\n"); fclose(fptr); exit(1); } //until EOF while ( (ch = fgetc(fptr)) != EOF) { /* * If current character is uppercase then toggle * it to lowercase and vice versa. */ ch = (isupper(ch))? tolower(ch):toupper(ch); // write ch in temporary file. fputc(ch, fpTmp); } // Close all files to release resource fclose(fptr); fclose(fpTmp); // Delete original file remove(FILE_NAME); // Rename temporary file as original file rename("tmp.txt", FILE_NAME); } int main() { //file pointer FILE *fp = NULL; //open the file fp = fopen(FILE_NAME, "r"); if(fp == NULL) { printf("Error in creating the file\n"); exit(1); } /** * Function to convert lowercase characters to uppercase * and uppercase to lowercase in a file. * It also close the opened file */ toggleFileData(fp); return 0; }
File content before executing code,
File content after executing code,
Code Analysis:
In the above example, first, we opened the already created text (“aticleworld.txt”) file in reading mode and get the file pointer. Using the if condition I am verifying that file is opened successfully or not.
//open the file fp = fopen(FILE_NAME, "r"); if(fp == NULL) { printf("Error in creating the file\n"); exit(1); }
Called the “toggleFileData” function in which create a temporary file and get the file pointer.
//create the file fpTmp = fopen("tmp.txt", "w"); if(fpTmp == NULL) { printf("Error in creating tmp file\n"); fclose(fptr); exit(1); }
Read the file character using the c fgetc function and convert uppercase to lowercase or lowercase to uppercase. After toggling it write it into the created temporary file.
//until EOF while ( (ch = fgetc(fptr)) != EOF) { /* * If current character is uppercase then toggle * it to lowercase and vice versa. */ ch = (isupper(ch))? tolower(ch):toupper(ch); // write ch in temporary file. fputc(ch, fpTmp); }
Now close both files and remove the “aticleworld.txt” file. In the last change the name of the temporary file with the original file name.
// Close all files to release resource fclose(fptr); fclose(fpTmp); // Delete original file remove(FILE_NAME); // Rename temporary file as original file rename("tmp.txt", FILE_NAME);
Recommended posts:
- How to use fgetc() in C?
- How to use fputc() in C?
- How to use fgets() in C?
- How to use fputs() in C?
- How to use fread() in C?
- How to use fwrite() in C?
- How to use fopen() in C?
- Use of if condition in C programs.
- C Program to Create a File & Store Information.
- C program to compare two files contents.