关于打开文件的问题,路径的出入和赋初值为何不一样?
如代码,如果把name赋初值的内容去掉,采用箭头所示方法就可以正确打开文件,为什么?还有个问题就是如何才能向文件内写入空格和回车,我一写入空格和回车程序就会结束,怎么才能避免,应该采用哪个输入或者输出函数?求解答,深表感谢!
程序代码:#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void Chakan(char *p);/*查看文件的函数*/
void Shuru(char *p);/*向文件输入内容的函数*/
int main()
{
char name[20]={"D://dufu.txt"},str[50];/*给name赋初值会找不到地址。fopen(name,"r")就会返回NULL*/
/*printf("输入要改变的文件位置。\n"); <-----{ 但是用如箭头所示的方法给name赋路径}
scanf("%s",name); <-----{就不会有问题。同样的输入D://dufu.txt就}
getchar(); <-----{可以成功打开文件“dufu.txt“。 }*/
Chakan(name);/*查看name路径的文件*/
Shuru(name);/*向name路径的文件增加内容*/
printf("文件修改后-------------------------------\n");
Chakan(name);
return 0;
}
/*查看文件函数*/
void Chakan(char *p)
{
FILE *fp;
char ch;
if((fp=fopen(p,"r"))==NULL)
{
printf("抱歉,打开文件失败。\n");
}
else
{
printf("该文件内容为:\n");
while((ch=fgetc(fp))!=EOF)
putchar(ch);
}
fclose(fp);
}
/*增加文件内容函数*/
void Shuru(char *p)
{
FILE *fp;
char s[50];
printf("\n------------------------------------------\n");
printf("请输入要增加的内容( ctrl+z/^z 结束输入。):\n");
scanf("%s",s);
if((fp=fopen(p,"a"))==NULL)
{
printf("抱歉,文件打开失败,无法写入。\n");
}
else
{
while(s!=EOF)
{
fputs(s,fp);
}
}
fclose(fp);
}






