Как бы я использовал fgets, чтобы не читать в пробелах - PullRequest
0 голосов
/ 30 июня 2011

Я сравниваю два файла построчно, и мне было интересно, есть ли способ заставить fgets не читать в пробелах.Например, если один файл имеет

  hello world

, а другой файл имеет

hello       world

, я хочу игнорировать первые два пробела и пробелы в середине и вернуть оба эти строкиравный.

#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;
}

Ответы [ 2 ]

3 голосов
/ 30 июня 2011

Нет, функция fgets не имеет такой возможности. Вы должны удалить пробелы самостоятельно.

Но, возможно, не все пробелы. Для вашего задания следует ли считать «hello world» совпадением с «helloworld»? Если нет, вам может потребоваться удалить все ведущие и замыкающие пробелы, но относитесь к внутренним пробелам с большей осторожностью - возможно, перед выполнением сравнения замените строку пробельных символов одним пробелом.

1 голос
/ 30 июня 2011

Как насчет использования scanf () sscanf () с "% s" для пропуска пробелов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...