このファイルはdictionary1.txtという名前で、彼らのすぐ隣の発音。私がしたいことは、各行から最初の単語を取得し、プログラムが最初から作成する別のtxtファイルにそれらを印刷することです。私のコードはそれをしますが、それはまた、英語の単語の間にランダムな中国語の文字を印刷します、なぜ私は分かりません。.txtファイルから各行の最初の単語を取得し、その単語を別の.txtファイルに出力する:仕事の種類だけでなく、ランダムな文字を印刷する
ここでは出力に含まファイルは次のようになります。
(た発音がdictionary1.txtでblankspaceで各行の実際の言葉から区切られている)https://imgur.com/a/pZthP
マイコード:
#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文字にスペースが含まれていないことです。したがって、バッファオーバーフローが発生し、ランダムなガベージが出力ファイルに表示されます。 – redxef
鉱山はまだ動作しません。小さな.txtファイルでテストしたところ、うまくいきました。私は巨大な辞書でそれを実行すると、まだ単語間のランダムな文字を印刷します... –