ПРИМЕЧАНИЕ: я новичок, поэтому не знаю много вещей.
Код работает нормально.Его цель - перевести текстовый файл с языка один (английский) на язык 2 (французский), используя словарь с языка 1 (символьное слово [] []) и языка 2 (символ заменить [] []).
Я просто хочу знать, как я могу изменить его, поэтому я использую строку из текстового файла вместо массивов "word" и "replace".
Содержимое слова "word"текстовый файл (скажем, englishwords.txt):
Привет (это будет в первой строке текста) Что (это будет во второй строке текста) Вы (это будет в третьей строке текста) Как вы (это будет в четвертой строке текста) дурак (это будет в пятой строке текста)
Содержимое текстового файла "replace" (скажем, frenchwords.txt):
Salut (это будет в первой строке текста) Quoi (это будет во второй строке)текста) Tu es (это будет в третьей строке текста) Ce va (это будет в четвертой строке текста) un fou (это будет в пятой строкетекст)
В основном: одна строка в текстовом файле = одно слово или коррелированная фраза
int main(){
FILE *fp1, *fp2;
char fname[MAX];
char string[MAX];
char temp[] = "temp.txt", *ptr1, *ptr2;
/* get the input file from the user */
printf("Enter your input file name: ");
fgets(fname, MAX, stdin);
fname[strlen(fname) - 1] = '\0';
int j = NULL;
do {
/* in-code dictionary */
char word[MAX][MAX] =
{
"Hello",
"What",
"You're",
"How are you",
"a fool"
};
char replace[MAX][MAX] =
{
"Salut",
"Quoi",
"Tu es",
"Ca va",
"un fou"
};
/* open input file in read mode */
fp1 = fopen(fname, "r");
/* error handling */
if (!fp1) {
printf("\nUnable to open the input file or it doesn't exist!\n");
return NULL;
}
/* open temporary file in write mode */
fp2 = fopen(temp, "w");
/* error handling */
if (!fp2) {
printf("\nUnable to open temporary file or it was erased!\n");
return NULL;
}
/* going through and replacing the objects */
j++;
while (fgets(string, sizeof string, fp1)) {
char *p = string;
int i;
while (*p) {
for (i = NULL; i < 5; ++i)
if (!strncmp(p, word[i], strlen(word[i])))
break;
if (i < 5) {
fputs(replace[i], fp2);
p += strlen(word[i]);
}
else {
putc(*p, fp2);
p++;
}
}
}
/* close the opened files */
fclose(fp1);
fclose(fp2);
/* remove the input file */
remove(fname);
/* rename temporary file name to input file name */
rename(temp, fname);
} while (j < 2);
return NULL;}
Полагаю, вот как я начинаю:
FILE * enw = fopen ("englishwords.txt", "r");
FILE * frw = fopen ("frenchwords.txt", "r");
Но как мне продолжить разрешение?