Почему недавно объявленный файловый указатель возвращает (-1), несмотря на тот факт, что файл хранит в нем данные? - PullRequest
0 голосов
/ 07 марта 2020

Я пытаюсь записать данные, введенные пользователем, в один файл, затем прочитать данные из этого файла и зашифровать их. Однако, когда я объявляю указатель файла для второго модуля, он уже возвращает (-1) без использования ранее.

//Entering Message to file
void enter_text(FILE *fp2)
{
        char ch;
        while ((ch = getchar())!=EOF)
        {
                putc(ch,fp2);
        }
}
int Encoding(char *argv_2,char *argv_3,char *argv_4)
{
        FILE *fp1, *fp2, *fp3, *fp_temp;
        int n, e;

        //opening the text file
        fp2 = fopen(argv_3, "w+");

        //Entering the text to file
        printf("Enter your secret text and Press CTRL + Z To Stop : \t");
        enter_text(fp2);//

        printf("Enter the value of n: ");
        scanf("%d", &n);
        printf("Enter the value of e: ");
        scanf("%d", &e);

        Encrypt(argv_3, n, e);
}

Что касается второй части кода:

int Encrypt(char *argv_3, int n, int e)
{
        FILE *inp, *out;

        // destroy contents of these files (from previous runs, if any)
        out = fopen("cipher.txt", "w+");
        fclose(out);
        inp = fopen(argv_3, "r");
        if (inp == NULL) {
                printf("Error opening Source File.\n");
                exit(1);
        }

        out = fopen("cipher.txt", "w+");

        if (out == NULL) {
                printf("Error opening Destination File.\n");
                exit(1);
        }

        //Both getc(inp) and ch are retuning (-1) even after fseek()
        //printf("%d",getc(inp));
        //fseek(inp, 0L, SEEK_SET);

        // encryption starts
        while (1) {
                char ch = getc(inp);

        if (ch == -1)
                break;
        int value = toascii(ch);
        printf("%d",value);

        Encryption(value, out);
    }

    fclose(inp);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...