注意:我是一个初学者,所以我不了解很多东西。
代码运行正常。其目的是使用语言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”);
但是我该如何继续解决?