关于打开文件的问题,路径的出入和赋初值为何不一样?
如代码,如果把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); }