何らかの理由で、次のコードでフレーズを出力すると、fgets 関数がテキスト ファイルの最後の文字を取得していないことがわかりました。すでに mone1 をチェックしたところ、ファイル内のテキストに十分なスペースが与えられていることがわかりました。誰かがその出来事に対する説明と解決策を持っていますか?
Tnx、ディーン。
ps文字列の長さを2文字に変更しても問題の原因ではないと確信していますが、最初の文字のみを出力し(最後の文字は出力しません)、すべて同じ行に書き込まれます.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char * argv[])
{
printf("ss");
FILE * sent=NULL;
FILE * voca=NULL;
sent=fopen(argv[1],"r");
voca=fopen(argv[2],"r");
if(voca==NULL){
printf("cannot open voca ");
fclose(voca);
}
if(sent==NULL){
printf("cannot open sent");
fclose(sent);
}
int mone1=0;
int mone2=0;
while(EOF!=fgetc(sent))
mone1++;
while(EOF!=fgetc(voca))
mone2++;
fseek(sent,0L,SEEK_SET);
fseek(voca,0L,SEEK_SET);
char* phrase=(char*)(malloc(mone1*sizeof(char)));
char* voc=(char*)(malloc(mone2*sizeof(char)));
fgets(phrase,mone1,sent);
fgets(voc,mone2,voca);
printf("%s",phrase);
return 0;
}