如何用C语言制作通用的文件读写程序?

/*以下程序的功能是:实现从键盘输入文件路径,向其中输入数据*/

#include<stdio.h>
#include<string.h>
int main(int argc,char * argv[])
{
FILE * fpin;
int i=0;
int j=0;
char ch;
char s[64];
printf("输入文件完整路径并用双引号括好,父子级用双反斜杠隔开,如“e:\\cfile1.txt”。\n");
fgets(s,64,stdin);
printf("刚才输入的是%s\n",s);
getchar();
fflush(stdin);
if((fpin=fopen(s,"w+"))==NULL)//*注意!不能写成"w",因为后面还要读!
{
printf("打开文件\"%s\"时出错!\n",s);
getchar();
return 0;
}

printf("请输入一组字符串并以#号结束:\n");

//*下面while语句的功能实现从显示器接受字符,输入到文件d:\\fseekin.txt中

while((ch=fgetc(stdin))!='#')
{
fprintf(fpin,"%c",ch);
i++; //*记住输入文件的字符数
}
//*以下语句核对输入的字符数,并确定文件指针位置
fprintf(stdout,"刚才输入的%d个字符使\"%s\"的文件指针向前移动了%d个字节\n",i,s,ftell(fpin));

j=ftell(fpin);
printf("fpin中指针偏移%d个字节\n",j);

//*下面的语句测试并关闭打开的文件
if(fclose(fpin))
{
printf("关闭文件\"%s\"时出错!\n",argv[1]);
getchar();
return 0;
}
printf("关闭文件成功!\n");
getchar();
return 0;
}

我的问题是,为什么运行时,输入文件文件路径后会输出“打开文件***(星号代表我输入的路径时出错!”,而且双引号还是不加。如果用argv[]数组代替s的话,能通过编译,但运行时操作系统会报错。
那位大虾能帮忙分析一下啊!
错了!“输入文件文件路径后会输出“打开文件***(星号代表我输入的路径时出错!”,而且双引号还是不加。”应该是“输入文件文件路径后会输出‘打开文件***(星号代表我输入的路径)时出错!',不管加不加引号都一样”

fgets这个函数一向比较危险,'\n'也会被它收走,改为scanf("%s", s);getchar();试试,当然,最好别用调用,自己写一个
温馨提示:答案为网友推荐,仅供参考