I need to write a function that returns every permute of a word in a given text file.
For some reason the output is wrong and I don't really understand why.
However, if instead of writing a function that should check a presnce of a letter (as seen below the function chars(char,char*))
I write the needed letters for check manually
 it works as intended.
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define MAX 100
void permute(FILE *fp, char *perm){
int c,i,perm_size=0;
int flag,chars(char,char *);
char permute[MAX];
i=0;
while(perm[i++])
    perm_size++;
    flag=0;
    i=0;
while(!feof(fp)){
    c=fgetc(fp);
    if(chars(c,perm)==0){/*a function that checks c with each one of the permutes chars*/
        flag++;
        permute[i++]=c;
        if (flag == perm_size){/*if the permute is the word's length*/
            permute[i]='\0';
            printf("%s\n",permute);
            flag=0;
          i=0;
          permute[0]='\0';
        }
    }
    else{
      flag=0;
        i=0;
    }   
  }
}
int chars(char ch, char *str){
    while(*str++)
    {
        if(ch==*str)
            return 0;
    }
    return 1;
}
#include "func.h"
#include <string.h>
int main(int argc,char **argv){
FILE *fp; 
char *input,*perm;
char *prog=argv[0];
void permute(FILE *, char *);
if(argc==1)
{
    fprintf(stderr,"%s error: no arguments\n",prog);
    exit(1);
}
input=argv[1];
perm=argv[2];
if(!(fp=fopen(input,"r")))  
{
    fprintf(stderr,"%s error: cannot open file\n",prog);
    exit(1);
}
  permute(fp,perm);
  fclose(fp);
  return 0;
}
input:
      ./program text chairs
output:
      nothing
