C语言文件问题

#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; /*返回*/
}/*主函数完*/我运行后什么都没有显示,那个文件怎么打开啊,C语言里文件是怎么打开的啊?
我把它改成r,直接运行,出现的仍然是空白,什么都没显示。文件是怎么打开的,如果有同样名字的文件,它又会打开什么?文件这一块书我看不懂,详细分析下吧

第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说明的
第4个回答  2011-08-26
什么都没显示才是对的....你用"w"(写)的方式打开两个文件,文件打开成功了,但是你的程序中没有输出什么东西啊,肯定就是空白的,你要读文件里的内容就用"r"方式,要创建并写内容进去就用“w”,要在文件后添加东西就用“a”,文件内容读出来后,你还要用printf 或者putc等输出语句把内容显示在界面上啊...你没有输出语句肯定就没有显示啊本回答被提问者采纳
第5个回答  2011-08-26
确认文件后缀是.CPP。用文本文档就能打开。
相似回答