【发布时间】:2018-04-05 19:44:59
【问题描述】:
所以我们有一个名为dictionary1.txt 的文件,它旁边有单词及其发音。我想要做的是从每一行中获取第一个单词并将它们打印到程序从头开始创建的另一个 txt 文件中。我的代码可以,但它也会在英文单词之间打印随机的中文字母,我不知道为什么。
输出文件如下所示:https://imgur.com/a/pZthP
(在dictionary1.txt中,发音与每行中的实际单词分开,并带有空格)
我的代码:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
char line[100];
int i = 0;
FILE* fp1 = fopen("dictionary1.txt", "r");
FILE* fp2 = fopen("dictionary2.txt", "w");
if (fp1 == NULL || fp2 == NULL){
printf("ERROR");
return -1;
}
while (fgets(line, 100, fp1) != NULL){
while (line[i] != ' '){
fputc(line[i], fp2);
i++;
}
i=0;
fputc('\0', fp2);
}
return 0;
}
我也尝试了 fputc('\n', fp2) ,但无论如何我都无法进入我从头开始创建的文件的下一行。乱七八糟的中文字母我也甩不掉。
编辑:我想通了。我正在处理的 .txt 文件以 Unicode 格式保存,这不适用于我的程序。我把它变成了 ANSI,现在它就像一个魅力。
【问题讨论】:
-
您的程序按我的预期工作(在将
fputc('\0', fp2)替换为fputc('\n', fp2)之后),如果一行中没有空格,我检查了换行符。我唯一能想到的是,您的输入行的前 100 个字符不包含空格,因此您会遇到缓冲区溢出,并且输出文件中会出现随机垃圾。 -
我的还是不行。我用一个较小的 .txt 文件对其进行了测试,它工作正常。当我在一个巨大的字典上运行它时,它仍然会在单词之间打印随机字符......