I am working on a assignment:
Open a text file and print its contents in command window, ask the user to replace the text from the text file to be written and save the text file.
When I set the maximum character size to 256,it works but when I give 20 it doesn't. Is there a way to overcome this problem by printing the characters beyond the defined limit?
I have used fgets() function.
#include <stdio.h>
#include <string.h>
#define MAX 20
 int main(){
    FILE *fptr1, *fptr2;
    int lno, linectr = 1;
    char str[MAX],fname[MAX];
    char newln[MAX], temp[] = "temp.txt";
    printf("\n\n Replace a specific line in a text file with a new text :\n");
    printf(" Input the file name to be opened : ");
    fgets(fname, MAX, stdin);
    fname[strlen(fname) - 1] = '\0';
    fptr1 = fopen(fname, "r");
    if (!fptr1)
    {
            printf("Unable to open the input file!!\n");
            return 0;
    }
    fptr2 = fopen(temp, "w");
    if (!fptr2)
    {
            printf("Unable to open a temporary file to write!!\n");
            fclose(fptr1);
            return 0;
    }
    printf(" Input the content of the new line : ");
    fgets(newln, MAX, stdin);
    fgets(str, MAX, stdin);
    printf(" Input the line no you want to replace : ");
    scanf("%d", &lno);
    lno++;
    while (!feof(fptr1))
    {
        strcpy(str, "\0");
        fgets(str, MAX, fptr1);
        if (!feof(fptr1))
        {
            linectr++;
            if (linectr != lno)
                {
                    fprintf(fptr2, "%s", str);
                }
                else
                {
                    fprintf(fptr2, "%s", newln);
                }
            }
    }
    fclose(fptr1);
    fclose(fptr2);
    remove(fname);
    rename(temp, fname);
    printf(" Replacement did successfully\n");
    return 0;
}
 
    