今天刚开通博客,正好今天在群里看了下别人的疑问,关于c语言"只读(r)"的含义:为写入数据,打开一个已经有的文本文件!

然后回头看了看书,自己总结了下关于c文件的读取与写入!

“读”:使用文件过程,程序从外部介质(如硬盘)“读”或"取“数据!通常称为”读入“!

”写”:创建文件过程,程序运行的保存数据到外部介质(如硬盘)!通常称为“写出”!

总结:是计算机与程序之间数据转换的读入与写出,非人与程序!把自己当机器就可以了!

为了熟悉,顺便看了个文件程序:

1.源程序

#include "stdio.h"

#include "stdlib.h"

int main(void)

{

FILE *fp;

char name[]="E:\\file2.txt";

char ch;

if(fp=fopen(name,"r"))=NULL){

printf("Error opening file %s\n",name);

exit(1);

}

ch=fgetc(fp);

while(ch!=EOF){

putchar(ch);

ch=fgetc(fp);

}

fclose(fp);

}

当运行完源程序的时候,能看到结果,但总感觉少了点什么,很乏味的看到原文本的内容,决定加个数组,一方面从文本的读入的数据显示出来,另一方面存入数组中的数据显示出来!

该后程序:

#include "stdio.h"

#include "stdlib.h"

int main(void)

{

FILE *fp;

char str[35];

int i=0,len;                ’初始化i值,len用来存放字符串数据组str的使用长度

char name[]="E:\\1.txt";   '这里是根据我自己存放文本的路径

char ch;

if ((fp=fopen(name,"r"))==NULL){

prinft("Error opening file %s!\n",name);

exit(1);

}

ch=fgetc(fp);

while(ch!=EOF){

putchar(ch);

ch=fgetc(fp);

str[i++]=ch;

}

fclose(fp);

printf("\n");   '运行换行,TC编译器不自己换行

len=strlen(str);

prinft("%d",len);

for(i=0;i<len;i++)

prinft("%c",str[i]);        

}

当运行程序的时候,发现这并不是我要的结果,因为存入数组后第一个数不见了,加入strlen是为了查看数组的使用长度;经过分析,发现第一个字符没有加入到数组中!

因为:while前面有句  ch=fgetc(fp);

         所以后面加了句:str[i]=ch; 这里就是初始化i的好处,此时i=0,并不影响循环

         把后面的语句str[i++]=ch改成str[++i]=ch,那么1.txt的内容就完全进入数组了!

以上是在下新学的东西,代码粗陋,望高手不要耻笑,若有错误的地方,望指教!

posted on 2011-08-14 17:49  FindLoad  阅读(223)  评论(0编辑  收藏  举报