C语言 把window文件路径的 \ 替换成/

我有一段程序是在linux下跑的,想弄到windows下。
可以弄过来之后,输入文件的路径却出了些问题。
使用C:\1.dat就不行, 使用C:/1.dat就可以。
因此我尝试用替换字符的程序去把 \ 替换成 / 。
char *replacestr(char *strbuf, char *sstr, char *dstr)
{

char *p,*p1;
int len;

    if ((strbuf == NULL)||(sstr == NULL)||(dstr == NULL))
            return NULL;

    p = strstr(strbuf, sstr);       //返回字符串第一次出现的地址,否则返回NULL
    if (p == NULL)  /*not found*/
            return NULL;

    len = strlen(strbuf) + strlen(dstr) - strlen(sstr);
    p1 = malloc(len);
    memset(p1, 0, len);
    strncpy(p1, strbuf, p-strbuf);
    strcat(p1, dstr);
    p += strlen(sstr);
    strcat(p1, p);
    return p1;
}

然后这样调用 filename = replacestr(filename, "\\", "/");
但是返回的是空指针,我也尝试了类似的程序,都无法替换,不知道问题出在什么地方

replacestr(filename, "\", "/");

replacestr第二个参数,换成两个斜杠

\是转义字符,用两个,\

 replacestr(filename, "\\", "/");

我复制你的可以成功呀,就是malloc(len)要把返回值强制转换下。

不用转换,使用“C:\1.dat”