Opening and Reading files fails

I am currently trying to read a file and count the number of instances of a user-specified string in an input file and output them to another file,.

However when I try to open the file, fopen returns NULL. Here's what I have so far:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main(int argc, char **argv)
{
    char in[50];
    char out[50];
    char target[50];

    getIns(in,out,target);
    Search(in, out, target);
    //printf("string entered: %s\n%s\n%s", in, out, target);



    return 0;
}

int getIns(char *i, char *o, char *t)
{
    printf("please enter name of input file you wish to search: \n -i ");
    fgets(i, 50, stdin);

    printf("please enter name of output file you wish to write to: \n -o ");
    fgets(o,50,stdin);

    printf("Please enter the string you wish to search for \n -c ");
    fgets(t, 50, stdin);

    return 1;
}


int Search(char *i, char *o, char *t)
{
    char*p;
    int c = 0;
    int start;
    char *data = NULL;
    FILE*f;

    f = fopen(i, "r");

    if (f == NULL)
    {
        printf("file not found \n Quitting...");
        exit(1);
    }   

    while(!feof(f))
    {
        fgets(data, sizeof(data), f);
        p = strstr(data,t);
        while (p != NULL)
        {
            c++;
            p = strstr(p , t);
        }
    }

    if (c == 0)
    {
        printf("String not in file\n");
    }
    if (c > 0)
    {
        printf("word: %s found: %d times\n", t, c);
    }

    fclose(f);

    return 1;
}


Edit:

I've made some changes to the code following the responses and now, my program crashes on reading the file. New code:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int Search(char *i, char *o, char *t)
{
    char*p;
    int c = 0;
    int start;
    char data[1024];
    FILE*f;

    f = fopen(i, "r");

    if (f == NULL)
    {
        printf("file not found \n Quitting...");
        exit(1);
    }   

    while(fgets(data, sizeof(data), f))
    {
        fgets(data, sizeof(data), f);
        p = strstr(data,t);

        while (p != NULL)
            c++; p = strstr(p+1 , t);
    }

    if (c == 0)
    {
        printf("String not in file\n");
    }
    if (c > 0)
    {
        printf("word: %s found: %d times\n", t, c);
    }

    fclose(f);

    return 1;
}

int getIns(char *i, char *o, char *t)
{
    printf("please enter name of input file you wish to search: \n -i ");
    fgets(i, 50, stdin); i[strcspn(i, "\n")] = 0;

    printf("please enter name of output file you wish to write to: \n -o ");
    fgets(o, 50, stdin); o[strcspn(o, "\n")] = 0;

    printf("Please enter the string you wish to search for \n -c ");
    fgets(t, 50, stdin); t[strcspn(t, "\n")] = 0;

    return 1;
}

int main(int argc, char **argv)
{
    char in[50];
    char out[50];
    char target[50];

    getIns(in,out,target);
    Search(in, out, target);

    return 0;
}


Click here view more answers http://ift.tt/1KG77s9