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