文件指针

html

淺唱寂寞╮ 提交于 2019-12-03 07:00:35
html 语法 Title html 语法 <! - - ... - -> 批注 <!> 跑马灯 <marquee>...</marquee>普通卷动 <marquee behavior=slide>...</marquee>滑动 <marquee behavior=scroll>...</marquee>预设卷动 <marquee behavior=alternate>...</marquee>来回卷动 <marquee direction=down>...</marquee>向下卷动 <marquee direction=up>...</marquee>向上卷动 <marquee direction=right></marquee>向右卷动 <marquee direction=left></marquee>向左卷动 <marquee loop=2>...</marquee>卷动次数 <marquee width=180>...</marquee>设定宽度 <marquee height=30>...</marquee>设定高度 <marquee bgcolor=FF0000>...</marquee>设定背景颜色 <marquee scrollamount=30>...</marquee>设定卷动距离 <marquee scrolldelay=300>...</marquee

iphone 面试题(转)

廉价感情. 提交于 2019-12-03 04:51:19
转】 iPhone 面试题解答 2011-07-20 0:51 转载自 492437598 最终编辑 492437598 1.main() { int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); printf("%d,%d",*(a+1),*(ptr-1)); } 答:2,5 *(a+1)就是a[1],*(ptr-1)就是a[4],执行结果是2,5   &a+1不是首地址+1,系统会认为加一个a数组的偏 移,是偏移了一个数组的大小(本例是5个int)   int *ptr=(int *)(&a+1);   则ptr实际 是&(a[5]),也就是a+5 原因如下:   &a是数组指针,其类型为 int (*)[5];   而 指针加1要根据指针类型加上一定的值,不同类型的指针+1之后增加的大小不同。   a是长度为5的int数组指针,所以要加 5*sizeof(int)   所以ptr实际是a[5]   但是prt与(&a+1)类型是不一样的(这点很重要)    所以prt-1只会减去sizeof(int*)   a,&a的地址是一样的,但意思不一样 a是数组首地址,也就是a[0]的地址,&a是对象(数组)首地址, a+1是数组下一元素的地址,即a[1],&a+1是下一个对象的地址,即a[5]. 2. 以下为Windows NT下的32位C+

LDD3源码分析之llseek分析

99封情书 提交于 2019-12-03 02:00:50
LDD3源码分析之llseek分析 编译环境: Ubuntu 10.10 内核版本: 2.6.32-38-generic-pae LDD3 源码路径: examples/scull/main.c 本文分析LDD3第6章的llseek函数。 一、用户空间的lseek函数 要理解驱动中llseek函数的实现,必须先清楚对应的用户空间中lseek函数的用法,lseek函数函数原型如下: [cpp] view plain copy off_t lseek( int fd, off_t offset, int whence); 第一个参数fd是要操作的文件描述符。 第二个参数指定文件操作指针的偏移量。注意,文件的读和写使用的是同一个文件操作指针。 第三个参数指定移动文件操作指针的参考点。这个参数通常取值为以下宏: SEEK_SET:表示相对文件起始位置。 SEEK_CUR:表示相对文件操作指针当前位置。 SEEK_END:表示相对文件结束位置。 下面先来看一个用户空间测试程序llseek_test.c的实现,这个程序用来测试scull的定位功能,其代码如下: [cpp] view plain copy 1#include <stdio.h> 2#include <unistd.h> 3#include <fcntl.h> 4#include <string.h> 5#include <sys

文件操作

匿名 (未验证) 提交于 2019-12-03 00:39:02
(转)http://www.cnblogs.com/likebeta/archive/2012/06/16/2551780.html C语言文件操作详解 C语言中没有输入输出语句,所有的输入输出功能都用 ANSI C提供的一组标准库函数来实现。文件操作标准库函数有:       文件的打开操作 fopen 打开一个文件       文件的关闭操作 fclose 关闭一个文件       文件的读写操作 fgetc 从文件中读取一个字符               fputc 写一个字符到文件中去               fgets 从文件中读取一个字符串               fputs 写一个字符串到文件中去               fprintf 往文件中写格式化数据               fscanf 格式化读取文件中数据               fread 以二进制形式读取文件中的数据               fwrite 以二进制形式写数据到文件中去               getw 以二进制形式读取一个整数               putw 以二进制形式存贮一个整数     文件状态检查函数 feof 文件结束               ferror 文件读/写出错               clearerr 清除文件错误标志  

[34.文件的加强读写模式] 零基础学python,简单粗暴

匿名 (未验证) 提交于 2019-12-02 22:54:36
概述 字符流文件的四种基本读写模式:r/w/a/x,都是要么只读要么只写的,强读强写会报错‘’ 接下来要介绍的加强读写模式则是全部是可读可写的; 它们分别是:读优先的r+,覆写优先的w+,追加优先的a+; 它们之间的区别在于文件打开时,文件指针的位置何在; 读优先的加强模式r+ 文件打开时,文件指针位于0的位置,便于从头开始读取文件; 因此我们称它是读优先的; 接下来可读可写; file = open (r "../res/doc/1.txt" , "r+" , encoding= "utf-8" ) print ( "当前文件指针在 %d " % (file. tell ())) # 可读可写 print (file. read ( 4 )) print ( "当前文件指针在 %d " % (file. tell ())) # 对于ASCII字符,每字符指针移动1位,对于汉字,每字符指针移动3位 print (file. read ( 4 )) print ( "当前文件指针在 %d " % (file. tell ())) # 继续移动文件指针到指定位置 file. seek ( 37 ) print (file. read ( 6 )) # 写入内容 print ( "当前文件指针在 %d " % (file. tell ())) # 54 file. seek ( 54 )

Python -- seek定位文件指针位置 错误 io.UnsupportedOperation: can&#039;t do nonzero cur-relative seeks错误

匿名 (未验证) 提交于 2019-12-02 22:11:45
f=open("E:/test/悯农.txt",'r') str=f.read(17) print("读取的数据是:",str) position=f.tell() print("当前位置:",position) f.seek(4,0) #从头开始,偏移4个字节 position=f.tell() print("当前位置:",position) f.seek(4,1) #从当前位置开始,偏移4个字节 position=f.tell() print("当前位置:",position) f.seek(-4,2) position=f.tell() print("当前位置:",position) f.close() 总结: seek中whence参数的值: 0:open函数以r,w,带b的二进制模式,就是以 任何模式 打开文件,都能正常运行 1和2:open函数 只能以二进制模式 打开文件,才能正常运行,否则就会报出上面的错误 Python的官方文档的解释: 链接地址:https://docs.python.org/3/tutorial/inputoutput.html?highlight=seek >In text files (those opened without a b in the mode string), only seeks relative to the

PHP常用函数大全

梦想的初衷 提交于 2019-12-02 18:58:28
字符串函数 strlen:获取字符串长度,字节长度 substr_count 某字符串出现的次数 substr:字符串截取,获取字符串(按照字节进行截取) mb_strlenmb_substr strchr:与substr相似,从指定位置截取一直到最后 strrchr(获取文件后缀名):与strchr一样,只是从右边开始查找字符 strtolower:所有的字符都小写(针对英文字母) strtoupper:所有的字符都大写 strrev:字符串反转(只能反转英文:英文存储只有一个字节),按照字节进行反转 strpos:从字符串中找对应字符出现的位置(数字下标),从最左边开始找 strrpos:与strpos一样,只是从字符串的右边开始找 trim:去掉函数两边的字符,默认是空格 str_split 函数把字符串分割到数组中。 chunk_split() 函数把字符串分割为一连串更小的部分 str_repeat("Shanghai",5);把字符串 "Shanghai " 重复 5 次 str_replace('\\', '/', dirname(__DIR__))); 替换 ucfirst 首字母大写 时间日期函数 time:得到当前时间的时间戳(整型:从格林威治时间1970年1月1日0时0分0秒开始)秒数 date:时间序列化函数,将指定的时间戳转换成规定时间日期的显示格式

c/c++总结

浪尽此生 提交于 2019-12-02 10:47:13
1. 0X0 0x0地址是NULL 2. Gdb调试子进程 1.set follow-fork-mode <parent/child> 这条命令可以用于在调试父进程或是子进程的模式之间进行切换。例如在 fork 函数执行之前执行 set follow-fork-mode child, 当 fork 执行后,设定在子进程上的断点将会有效,而父进程上的断点此时无效;反之依然。缺省 gdb 是调试主进程的。 2.attach<pid> GDB 有附着( attach )到正在运行的进程的功能,即 attach <pid> 命令。因此我们可以利用该命令 attach 到子进程然后进行调试。 3. Gdb调试nginx 多进程调试 #sudo gdb –q (gdb)shell ./nginx 如果只是gdb ./nginx 那么启动nginx还是单进程 4. Linux内核模块编写和makeFile编写 hello.c内容: #include <linux/module.h> #include <linux/init.h> static int hello_init(void) { printk( KERN_ALERT " hello world enter \n"); return 0; } static void hello_exit(void) { printk(KERN_ALERT

用程序在代码节空白处加代码

两盒软妹~` 提交于 2019-12-02 02:48:19
1.工具头文件 #ifndef PETOOL_H #define PETOOL_H #include "stdafx.h" #include <stdlib.h> #include <windows.h> //函数声明 //************************************************************************** //ReadPEFile:将文件读取到缓冲区 //参数说明: //lpszFile 文件路径 //pFileBuffer 缓冲区指针 //返回值说明: //读取失败返回0 否则返回实际读取的大小 //************************************************************************** DWORD ReadPEFile(IN LPSTR lpszFile,OUT LPVOID* pFileBuffer); //************************************************************************** //CopyFileBufferToImageBuffer:将文件从FileBuffer复制到ImageBuffer //参数说明: //pFileBuffer FileBuffer指针 /

文件镜像和内存镜像

拜拜、爱过 提交于 2019-12-01 16:24:41
直接将一个pe文件读到内存中是无法运行的,必须经过拉伸,然后再做其它处理才能可运行; 文件中的pe文件状态为文件映像; 拉伸后的状态为内存映像; 1.pe加载过程 1)根据SizeOfImage的大小,开辟一块缓冲区(ImageBuffer). SizeOfImage是可选pe头中的一个属性; 2)根据SizeOfHeaders的大小,将头信息从FileBuffer拷贝到ImageBuffer 文件映像和内存影响的头部信息是相同的,可以直接拷贝过去; 头部信息包括:dos头、标准pe头、可选pe头、节表; SizeOfHeaders是可选pe头的属性;表示所有头加起来然后按文件对齐后的大小; 3)根据节表中的信息循环讲FileBuffer中的节拷贝到ImageBuffer中. 节表中的属性PointerToRawData,表示文件映像中节的位置 ,决定了从哪里开始复制; 节表中有个属性VirtualAddress,表示内存镜像中该节相对于dos头开始的偏移;决定了该复制到哪个地方; 4)Misc.VirtualSize 和 SizeOfRawData谁大? VirtualSize是实际节的大小,也就是不包含文件对齐补的0; SizeOfRawData是节文件对齐后的大小; VirtualSize是可能比SizeOfRawData大的; 例如:char buf[1000]