Как изменить массив символов со строками файла? - PullRequest
0 голосов
/ 10 февраля 2019

ПРИМЕЧАНИЕ: я новичок, поэтому не знаю много вещей.

Код работает нормально.Его цель - перевести текстовый файл с языка один (английский) на язык 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");

Но как мне продолжить разрешение?

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