| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 627 人关注过本帖
标题:关于"文件"的一些疑问(麻烦高手顺序答谢谢)
只看楼主 加入收藏
ffppgg
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-3-18
收藏
 问题点数:0 回复次数:7 
关于"文件"的一些疑问(麻烦高手顺序答谢谢)
(麻烦高手顺序答,谢谢!)
1.强哥的那本书里讲关于 fgetc()函数时第一句话是:"从指定的文件读入一个字符......"就是这个"读入"一开始我以为是读入到另一个文件,现在发现应该是读入到内存中(已经分配的存储空间,如ch=fgetc(fp);)是吗???
还有fgetc(fp),是自动顺序读取fp文件里面的字符?
2.先看一下强哥书里面的这个例题:
例13.1 从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个"#"为止.
#include
main( )
{FILE?*fp;
char ch,filename[10];
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL)
{printf("cannot open file\n");
exit(0);}
ch=getchar( ); /*接收在执行scanf语句时最后输入的回车符*//*<-这行,上面的 scanf("%s",filename);不存放回车符??*/
ch=getchar( );/*接收输入的第一个字符*/
while(ch!='#')
{
fputc(ch,fp);putchar(ch);
ch=getchar();
}
fclose(fp);
}

3.例13.2将一个磁盘文件中的信息复制到另一个磁盘文件中
#include
main( )
{FILE?*in,?*out;
char ch,infile[10],outfile[10];
printf("Enter the infile name:\n");
scanf("%s",infile);
printf("Enter the outfile name:\n");
scanf("%s",outfile);
if((in=fopen(infile,"r"))==NULL)/*疑问在这里,infile是什么,不就是存放文件名的字符数组的首地址吗!能这样当文件指针用吗??*/
{printf("cannot open infile\n");
exit(0);
}
if((out=fopen(outfile,"w"))==NULL)
{printf("cannot open outfile\n");
exit(0);
}
while(!feof(in))fputc(fgetc(in),out);
fclose(in);
fclose(out);
}

[此贴子已经被作者于2007-4-8 14:57:11编辑过]

搜索更多相关主题的帖子: 疑问 麻烦 麻烦 文件 文件 顺序 顺序 疑问 
2007-04-07 09:18
ffppgg
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-3-18
收藏
得分:0 

谢谢QQ0001000朋友,但下面的两个疑问......


2007-04-07 13:02
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 
ch=getchar( ); /*接收在执行scanf语句时最后输入的回车符*//*<-这行,上面的 scanf("%s",filename);不存放回车符??*/
这是因为scanf();按回车键时把回车换行符分解成回车符和换行符getchar();接收到的是回车符.
我可以给出一个例子:
#include <stdio.h>
int main()
{
char ch;
clrscr();
scanf("%c",&ch);
ch=getchar();
printf("%d,%d",ch,'\n');
getch();
}

wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-04-08 01:21
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 
if((in=fopen(infile,"r"))==NULL)/*疑问在这里,infile,是什么?不就是字符数组的首地址吗?能当文件指针用吗??*/

infile 是字符数组的首地址,它不是当作文件指针用的,只是作为一个文件名.
例如打开一个文件TEST in=fopen("TEST","r"); 这里的in是作为文件指针.

wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-04-08 01:24
ffppgg
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-3-18
收藏
得分:0 
辛苦大家了.
但.....if((in=fopen(infile,"r"))==NULL)/*疑问在这里,infile,是什么?不就是字符数组的首地址吗?能当文件指针用吗??*/
我的意思是:infile是存放一个文件名的字符数组的首地址,它可以当文件名或文件指针用?

2007-04-08 14:55
龙紫枫
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-11-3
收藏
得分:0 
函数fopen()原型是:
FILE *fopen (const char *filename, const char *mode);
形参:const char *filename就是表示文件名,可以(应该)包含路径,filename可以是字面字符串,也可以是指向字符串的指针。
形参:const char *mode表示打开文件方式:可以有6种取值,具体如下:
r:打开文件,读取。文件不存在则返回NULL;
w:打开文件,写入。文件不存在,创建,已存在,直接先删后建,不发出警告;
a:打开文件,追加内容。文件不存在,创建,已存在,在文件末尾追加内容;
r+:打开文件,读写。文件不存在,创建,已存在,数据写入开头,覆盖原来数据;
w+:打开文件,读写。文件不存在,穿件,已存在,则覆盖;
a+:打开文件,读跟追加。文件不存在,创建,已存在,则追加内容到文件末尾。
模式跟文件名,如果用字符串常量,则都应用双引号括起。

另外,小声说一句,楼主进度跟我差不多,我也到文件读写操作,不过,我不喜欢谭的书,有点简略,也就是有点难度。
2007-04-08 20:25
fengzar
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2006-10-27
收藏
得分:0 
我记得以前验证过这两个程序,觉得没有问题啊?
2007-04-08 21:43
木木788
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2007-4-5
收藏
得分:0 
并没有错,好好理解下哈
2007-04-08 22:34
快速回复:关于"文件"的一些疑问(麻烦高手顺序答谢谢)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017945 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved