如何用文件的行更改字符数组?

时间:2019-02-10 15:59:55

标签: c

注意:我是一个初学者,所以我不了解很多东西。

代码运行正常。其目的是使用语言1(char word [] [])和语言2(char replace [] [])的词典,将文本文件从一种语言(英语)翻译为第二种语言(法语)。

我只想知道如何更改它,所以我使用文本文件中的行,而不是“ word”和“ replace”数组。

“单词”文本文件的内容(假设为englishwords.txt):

你好(这将在文本的第一行) 什么(这将在文本的第二行) 您正在(这将在文本的第三行) 您好吗(这将在文本的第四行) 一个傻瓜(这将在文本的第五行)

“替换”文本文件的内容(比方说frenchwords.txt):

Salut(这将在文本的第一行) Quoi(这将在文本的第二行) 周二(这将在文本的第三行) Ce va(这将在文本的第四行) 联合国(这将在文本的第五行)

基本上:文本文件中的一行=一个单词或相关短语

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”);

但是我该如何继续解决?

0 个答案:

没有答案