《Linux程序设计 第四版》之第三章的练习题

1、P103

一个目录扫描程序。

#include<stdio.h>
#include<dirent.h>
#include<sys/stat.h>

int isAdir(char* path);    //判断路径是否是目录类型
void printdirs(char* path,int depth)   //递归遍历打印文件与目录名
{

	DIR* dir=opendir(path);
	struct dirent* dirents;
	chdir(path);
	while(dirents=readdir(dir))
	{
	if(isAdir(dirents->d_name))
	{
	if(strcmp(".",dirents->d_name)==0||strcmp("..",dirents->d_name)==0)
		continue;
		printf("%*s%s/ \n",depth," ",dirents->d_name);
		printdirs(dirents->d_name,depth+1);

	}
	else
		printf("%*s%s/ \n",depth," ",dirents->d_name);
	}
	chdir("..");
	closedir(dir);

}
int isAdir(char* path)
{
	struct stat statbuff;
	//printf("%s",path);
	lstat(path,&statbuff);

	if(S_ISDIR(statbuff.st_mode))
		{

		return 1;
		}

	return 0;

}
int main(int argc,char* argv[])
{

	/* char* path[1023];
	gets(path);          //用户在程序中自己输入的Path
	chdir(path);*/
	char* path=".";     //用程序的参数当path
	if(argc >=2)
	{
	path = argv[1];
	}

	if(isAdir(path)==1)
		{
		printdirs(path,0);
		perror("wrong::");
		return 1;
		}
	printf("path is not a dir");

	return 1;

}

2、P112

使用mmap函数程序,来修改文件内容,将文件映射到内存,并且看成数组进行更改!

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<fcntl.h>
#include<sys/mman.h>
#define recordNum (50)
struct Record       //记录的结构
{
int integ;
char string[15];
}Record;
int creatfile(char* file)
{
	struct Record r;
	FILE* fp=fopen(file,"w+");
	int i=0;
	for(;i<50;i++)
	{
		r.integ=i;
		memset(r.string,0,15);
		sprintf(r.string,"Record-%d",i);   //格式化字符串输入到r.string中
		fwrite(&r,sizeof( r),1,fp);
	}
	fclose(fp);

}
void memomap(char* file)
{
	struct Record rECORD,*r;
	int f=open(file,O_RDWR);
	r=(struct Record *)mmap( 0 , recordNum*sizeof(struct Record), PROT_READ|PROT_WRITE, MAP_SHARED , f,0);   //内存映射函数
	r[20].integ=100;
	sprintf(r[20].string,"Record-%d",r[20].integ);
	msync((void*)r,recordNum*sizeof(rECORD),MS_SYNC);               //将该内存段的修改保存回文件中
	munmap((void*)r,recordNum*sizeof(rECORD));						//释放内存段
	close(f);
	return;
}

int main(int argc,char* argv[])
{
creatfile("records.date");
memomap("records.date");

	return 1;

}
时间: 2024-08-25 08:33:18

《Linux程序设计 第四版》之第三章的练习题的相关文章

《Linux程序设计 第四版》之第二章的最后练习题

这篇文章是<Linux程序设计 第四版>中的第二章的最后练习题(2.8综合应用), 题目是编写一个CD数据库应用程序, 首先:用两个文件来保存存储的数据,一个是title_file.cdb,一个是column_file.cdb! title_file.cdb里面保存的是唱片的基本信息:拥有如下四个字段: CD的目录编号,标题,唱片类型,作曲家或艺术家: column_file.cdb里面保存的是唱片的详细信息即唱片包含的歌曲信息:拥有如下三个字段: CD的目录编号,曲目编号,歌曲名 其次: 有

PHP与MYSQL程序设计【第四版】 第三章随笔——(1)

第三章PHP基础 (3.1——3.5) 3.1  在WEB页面中嵌入PHP代码 默认语法:<?php ?> 短标签:<? ?>或<?="";?>——不推荐 脚本:<script language="php"></script> ASP风格:<% %> 3.2 为代码添加注释 单行C++语法:// shell语法:# 多行C语法:/* This That */ 3.3 向浏览器输出数据 print

《Linux程序设计 第四版》之第四章的练习题

1.P128 一个获取日期 时间 格式化获取时间 日期 的程序. #include<stdio.h> #include<time.h> int main(int argc,char** argv) { struct tm* time1,*time_trans; //时间数据结构 time_t alt; char c_time[128]; char* result; char* result1=""; time(&alt); time1=localtime

《Linux程序设计 第四版》之第五章的练习题

1.P168 一个完整的终端输出选择菜单的程序. #include<stdio.h> #include<sys/time.h> #include<sys/types.h> #include<sys/resource.h> #include<math.h> #include<termios.h> #include<term.h> #include<curses.h> #include<stdlib.h>

Oracle PL/SQL程序设计 第五版 上册 第三章 语言基础

最近看了很多东西,也练习了一些,我发现这东西好像有点进入瓶颈的感觉,这个瓶颈,我觉得是因为时间太短, 练习的还不够多,并且有很多东西都是随意带过弄的.并且最近在学习Python,有些东西还有点混淆了,我决定从新 来一遍这本书,把每一个例子都进行一个学习. PL/SQL块有匿名的,也有命名的,其实命名就是那些过程.函数.包.触发器.对象类型这些.书中第一个例子是这样的. insert.sql CREATE OR REPLACE PROCEDURE get_happy(emp_id_in IN NU

[C程序设计(第四版)]谭浩强扫描版下载

下载地址: http://www.gqylpy.com/di/3 <C程序设计(第四版)>谭浩强PDF高清完整版-下载 C语言程序设计PDF 内容简介 <中国高等院校计算机基础教育课程体系规划教材:C程序设计(第4版)>是一本公认的学习C语言程序设计的经典教材.根据C语言的发展和计算机教学的需要,作者在<C程序设计(第三版)>的基础上进行了修订.<中国高等院校计算机基础教育课程体系规划教材:C程序设计(第4版)>按照C语言的新标准C99进行介绍,所有程序都符

2018-04-19 《鸟哥的Linux私房菜 基础学习篇(第四版)》 第15章 例行性工作排程 笔记

第三版的15章在第四版pdf上看,之后都在第四版pdf上看.第四版和第三版章节号不一样,从此日开始以第四版记录笔记 at新进程都在/var/spool/at/目录下/etc/at.allow/etc/at.deny cron(crond)系统crontab命令/var/spool/cron/"$用户名"    进程文件/etc/crontab        系统进程文件/usr/bin/crontab        crontab命令的执行文件/etc/cron.allow      

[看书][CSS精粹(第2版)]第三章 CSS和图像 & HTML网页布局

本章主要讲述作为背景图像方面的技巧. 1.边框(添加边框样式.去除边框): 2.为页面设置背景图像,位置设定,固定背景图像: 3.为任意元素设置背景图像: 4.文字放在图像的上面(作为背景图像): 5.为文档添加多个背景图像(本例利用html和body元素产生多重背景图像的效果): 6.在页面中使用透明效果(使用PNG格式图像). 利用网络搜索补充学习了padding的4个方向顺序(上右下左 顺时针),流式布局(看网上的解释结合书里的描述,大概是指页内布局元素采用百分数指定位置和大小). [个人

[C程序设计(第四版)].谭浩强.扫描版pdf

下载地址:网盘下载 内容简介 <中国高等院校计算机基础教育课程体系规划教材:C程序设计(第4版)>是一本公认的学习C语言程序设计的经典教材.根据C语言的发展和计算机教学的需要,作者在<C程序设计(第三版)>的基础上进行了修订.<中国高等院校计算机基础教育课程体系规划教材:C程序设计(第4版)>按照C语言的新标准C99进行介绍,所有程序都符合C99的规定,使编写程序更加规范:对C语言和程序设计的基本概念和要点讲解透彻,全面而深入:按照作者提出的"提出问题-解决问