第1个回答 2011-08-26
#include "stdio.h" /*包含系统函数头文件*/
int main(void) /*主函数*/
{
FILE * fp1 = NULL;
FILE * fp2 = NULL;
fp1 = fopen("file3.txt","w");
fp2 = fopen("file4.txt","w");//你用写方式打开,文件没有会创建。所以打开是成功的,不会打印错误
if(fp1 == NULL)//打开失败才会进入
{
printf("Open file1.txt error\n");
}
if(fp2 == NULL)
{
printf("Open file2.txt error\n");
}
getch(); /*暂停*/
return 0; /*返回*///return之前要加fclose();
}
你先确认一下文件是不是存在。 如存在,不管你用“r”,还是“w”都不会有错误打印
第2个回答 2011-08-26
fopen(...)你的是写模式,改成读写模式,然后读入bufftxt字符组中,然后回显.
#include "stdio.h" /*包含系统函数头文件*/
int main(void) /*主函数*/
{
FILE * fp1 = NULL;
FILE * fp2 = NULL;
char bufftxt[20];
fp1 = fopen("file3.txt","rw");
fp2 = fopen("file4.txt","w");
if(fp1 == NULL)
{
printf("Open file1.txt error\n");
}
if(fp2 == NULL)
{
printf("Open file2.txt error\n");
}
fread(bufftxt,38,1,fp1);
bufftxt[20]='\0';
printf("%s",bufftxt);
getch(); /*暂停*/
return 0; /*返回*/
}/
-------------------------补充
你可以随便在同目录下的file1.txt中写些东西,然后你就能看到回显了.关于文件打开方法,这需要了解到一些硬件的知识,汇编等等.
看看文件指针的定义,在stdio.h中:
typedef struct {
short level; /* fill/empty level of buffer */
unsigned flags; /* File status flags */
char fd; /* File descriptor */
unsigned char hold; /* Ungetc char if no buffer */
short bsize; /* Buffer size */
unsigned char *buffer; /* Data transfer buffer */
unsigned char *curp; /* Current active pointer */
unsigned istemp; /* Temporary file indicator */
short token; /* Used for validity checking */
} FILE; /* This is the FILE object */
可以看出FILE是一个结构体.
....未完,,待续.....下一节说下通过汇编代码说下是怎么打开文件的.吃饭去~
第3个回答 2011-08-26
你看看当前运行程序的文件夹下有没有这l两个文件?
fopen就是打开文件的函数啊,你自己查查,很多的,多看看文件i/o操作函数
1.有些也不太清楚了,我对指针也不是很厉害啊,提下自己看法
FILE * fp1 = NULL;FILE * fp2 = NULL;//这里应当可以不用初始化吧,直接FILE * fp1 ,* fp2 ;
2.fp1 = fopen("file3.txt","w");
fp2 = fopen("file4.txt","w");
这里如果没有file3.txt,就会在当前运行程序的文件夹下创建该文件;
3.if(fp1 == NULL)
{
printf("Open file1.txt error\n");
}
if(fp2 == NULL)
{
printf("Open file2.txt error\n");
}
因为你的指针都不为空,所以什么都没有显示啊。
http://blog.sina.com.cn/s/blog_4ac0a0d30100etdo.html 这里面有详细文件操作i/o说明的