mmap函数c语言 c语言map函数用法( 三 )


{
char str[9];
int ch,count,i;
FILE *fp;
if(argc!=2)
{
printf("Error format,Usage: dumpf filename\n");
return;
}
if((fp=fopen(argv[1],"r"))==NULL)
{
printf("The file %s can not be opened.\n",argv[1]);
return;
}
count=0;
do{
i=0;
//按八进制输出第一列,作为一行八个字节的首地址
printf("%06o: ",count*8);
do{
// 从打开的文件中读取一个字符
ch=fgetc(fp);
// 按十进制方式输出这个字符的ASCII码
printf("%4d",ch);
// 如果是不可示字符就用"#"字符代替
if(ch' '||ch'~') str[i]='#';
// 如果是可示字符,就将它存入数组str以便形成字符串
else str[i]=ch;
// 保证每一行输出八个字符
if(++i==8) break;
}while(ch!=EOF); // 遇到文件尾标志 , 结束读文件操作
str[i]='\0'; // 在数组str加字符串结束标志
for(;i8;i++) printf(" "); // 一行不足八个字符用空格填充
printf(" %s\n",str); // 输出字符串
count++; // 准备输出下一行
}while(ch!=EOF); // 直到文件结束
fclose(fp); // 关闭fp所指文件
}
C. 从文件中读取一个字符串
1. 函数原型
char *fgets(char *str,int n,FILE *fp)
2. 功能说明
从由fp指出的文件中读取n-1个字符,并把它们存放到由str指出的字符数组中去,最后加上一个字符串结束符'\0' 。
3. 参数说明
str:接收字符串的内存地址,可以是数组名,也可以是指针 。
n: 指出要读取字符的个数 。
fp:这是个文件指针 , 指出要从中读取字符的文件 。
4. 返回值
正常返回:返回字符串的内存首地址,即str的值 。
非正常返回:返回一个NULL值,此时应当用feof()或ferror()函数来判别是读取到了文件尾,还是发生了错误 。例如,要从"写打开"文件中读取字符串,将
发生错误而返回一个NULL值 。
D. 写一个字符串到文件中去
1. 函数原型
int fputs(char *str,FILE *fp)
2. 功能说明
把由str指出的字符串写入到fp所指的文件中去 。
3. 参数说明
str:指出要写到文件中去的字符串 。
fp:这是个文件指针 , 指出字符串要写入其中的文件 。
4. 返回值
正常返回: 写入文件的字符个数,即字符串的长度 。
非正常返回:返回一个NULL值,此时应当用feof()或ferror()函数来判别是读取到了文件尾,还是发生了错误 。例如 , 要往一个"读打开" 文件中写字符串时,
会发生错误而返回一个NULL值 。
5.实例
【例】以下程序将一个文件的内容附加到另一个文件中去 。
//程序名:linkfile.c
//执行时可用:linkfile filename1 filename2形式的命令行运行,将文件filename2的内容附加在文件filename1之后 。
// file linked program.
#include stdio.h
#define SIZE 512
void main(int argc,char *argv[])
{
char buffer[SIZE];
FILE *fp1,*fp2;
if(argc!=3)
{
printf("Usage: linkfile filename1 filename2\n");
return;
}
// 按追加方式打开argv[1] 所指文件
if((fp1=fopen(argv[1],"a"))==NULL)
{
printf("The file %s can not be opened.\n",argv[1]);
return;
}
if((fp2=fopen(argv[2],"r"))==NULL)
{
printf("The file %s can not be opened.\n",argv[2]);
return;
}
// 读入一行立即写出,直到文件结束
while(fgets(buffer,SIZE,fp1)!=NULL)
printf("%s\n",buffer);
while(fgets(buffer,SIZE,fp2)!=NULL)
fputs(buffer,fp1);
fclose(fp1);
fclose(fp2);
if((fp1=fopen(argv[1],"r"))==NULL)
{

推荐阅读