私は2つのファイルを1行ずつ比較していて、スペースで読むことができないようにする方法があるのだろうかと思っていました。例えば、一つのファイルはスペースを読み込まないためにfgetsを使うにはどうすればいいですか?
hello world
を持っており、別のファイルには
hello world
を持っていた場合、私は真ん中の最初の2つのスペースとスペースを無視して、両方のこれらの行が等しいことを返すようにしたいです。
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define BUFSIZE 1024
int linecmp(FILE *fp1, FILE *fp2);
int charcmp(FILE *fp1, FILE *fp2);
int wordcmp(FILE *fp1, FILE *fp2);
int main(int argc, char * argv[])
{
size_t i;
FILE *fp1;
FILE *fp2;
fp1 = fopen("input.txt", "rb+");
fp2 = fopen("input2.txt", "rb+");
printf("%d",linecmp(fp1, fp2));
return 0;
}
int linecmp(FILE *fp1, FILE *fp2)
{
char line[BUFSIZE];
char line2 [BUFSIZE];
size_t linecount = 0;
size_t linecount2 = 0;
/*reads from first file pointer*/
while(fgets(line,BUFSIZE, fp1))
{
;
}
/*reads from second file pointer*/
while(fgets(line2,BUFSIZE, fp2))
{
;
}
return 0;
}
私はそのようなことを考えましたが、スペースをスキップするためにsscanfを使用することを考えていましたが、 "hello [SPACE] [SPACE] world"のような "%s" – user798774
@user:sscanfの問題は、一般的に、行内にいくつの「単語」があるのかわからないことです。また、ループ内でsscanfを使用して一度に1単語を取得しようとすると、スキップしたスペースの数がわからないため、次の単語の検索はどこから始まりますか?行を読み込んだら、文字を1文字ずつ探したり、スペースと非スペースを探したり、保存したい文字だけを含む新しい文字列を作成したりする必要があります。 –