Я пытаюсь записать данные, введенные пользователем, в один файл, затем прочитать данные из этого файла и зашифровать их. Однако, когда я объявляю указатель файла для второго модуля, он уже возвращает (-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);
}