Write a c program that opens an existing text file and copies it to a new text file with all lowercase letters changed to capital letters and all other characters unchanged.
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
int main() {
FILE *sourceFile, *destFile;
char sourceFilename[100], destFilename[100];
char ch;
int charCount = 0, convertedCount = 0;
printf("========== FILE COPY WITH UPPERCASE CONVERSION ==========\n\n");
// Get source filename
printf("Enter the source filename: ");
scanf("%s", sourceFilename);
// Get destination filename
printf("Enter the destination filename: ");
scanf("%s", destFilename);
// Open source file in read mode
sourceFile = fopen(sourceFilename, "r");
if (sourceFile == NULL) {
printf("\nError! Cannot open source file '%s'\n", sourceFilename);
printf("Please make sure the file exists.\n");
return 1;
}
// Open destination file in write mode
destFile = fopen(destFilename, "w");
if (destFile == NULL) {
printf("\nError! Cannot create destination file '%s'\n", destFilename);
fclose(sourceFile);
return 1;
}
printf("\nCopying file with uppercase conversion...\n");
// Read character by character from source
while ((ch = fgetc(sourceFile)) != EOF) {
charCount++;
// Convert lowercase to uppercase
if (ch >= 'a' && ch <= 'z') {
ch = ch - 32; // or use toupper(ch)
convertedCount++;
}
// Write to destination file
fputc(ch, destFile);
}
// Close both files
fclose(sourceFile);
fclose(destFile);
printf("\n***** FILE COPY COMPLETED SUCCESSFULLY *****\n");
printf("\nStatistics:");
printf("\n- Total characters copied: %d", charCount);
printf("\n- Lowercase letters converted: %d", convertedCount);
printf("\n- Source file: %s", sourceFilename);
printf("\n- Destination file: %s", destFilename);
// Display contents of both files
printf("\n\n***** ORIGINAL FILE CONTENT *****\n");
sourceFile = fopen(sourceFilename, "r");
while ((ch = fgetc(sourceFile)) != EOF) {
putchar(ch);
}
fclose(sourceFile);
printf("\n\n***** CONVERTED FILE CONTENT *****\n");
destFile = fopen(destFilename, "r");
while ((ch = fgetc(destFile)) != EOF) {
putchar(ch);
}
fclose(destFile);
printf("\n\n");
return 0;
}
Comments
Post a Comment