char函数

C++文件读写详解(ofstream,ifstream,fstream)

删除回忆录丶 提交于 2019-12-29 04:44:35
C++文件读写详解(ofstream,ifstream,fstream)    这里主要是讨论fstream的内容: 1 #include <fstream> 2 ofstream //文件写操作 内存写入存储设备 3 ifstream //文件读操作,存储设备读区到内存中 4 fstream //读写操作,对打开的文件可进行读写操作 1、打开文件    在fstream类中,成员函数open()实现打开文件的操作,从而将数据流和文件进行关联,通过ofstream,ifstream,fstream对象进行对文件的读写操作    函数:open() 1 public member function 2 3 void open ( const char * filename, 4 ios_base::openmode mode = ios_base::in | ios_base::out ); 5 6 void open(const wchar_t *_Filename, 7 ios_base::openmode mode= ios_base::in | ios_base::out, 8 int prot = ios_base::_Openprot); 9 /* 10 参数:filename 操作文件名 11 mode 打开文件的方式 12 prot 打开文件的属性 //基本很少用到

C++文件操作详解(ifstream、ofstream、fstream)

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-29 04:44:17
C++ 文件操作详解( ifstream 、 ofstream 、 fstream ) C++ 通过以下几个类支持文件的输入输出: ofstream: 写操作(输出)的文件类 (由ostream引申而来) ifstream: 读操作(输入)的文件类(由istream引申而来) fstream: 可同时读写操作的文件类 (由iostream引申而来) 打开文件 (Open a file) 对这些类的一个对象所做的第一个操作通常就是将它和一个真正的文件联系起来,也就是说打开一个文件。被打开的文件在程序中由一个流对象(stream object)来表示 (这些类的一个实例) ,而对这个流对象所做的任何输入输出操作实际就是对该文件所做的操作。 要通过一个流对象打开一个文件,我们使用它的成员函数open(): void open (const char * filename, openmode mode); 这里filename 是一个字符串,代表要打开的文件名,mode 是以下标志符的一个组合: ios::in 为输入(读)而打开文件 ios::out 为输出(写)而打开文件 ios::ate 初始位置:文件尾 ios::app 所有输出附加在文件末尾 ios::trunc 如果文件已存在则先删除该文件 ios::binary 二进制方式 这些标识符可以被组合使用,中间以”或”操作符(|

Linux内核device结构体分析

☆樱花仙子☆ 提交于 2019-12-28 17:51:05
1、前言 Linux内核中的设备驱动模型,是建立在sysfs设备文件系统和kobject上的,由总线(bus)、设备(device)、驱动(driver)和类(class)所组成的关系结构,在底层,Linux系统中的每个设备都有一个device结构体的实例,本文将对Linux内核的device结构体以及相关结构进行简要分析。 2、device结构体 在Linux内核源码中,struct device结构体的定义在include/linux/device.h中,实现的主要方法在drivers/base/core.c文件中,device结构体的定义如下所示: struct device { struct device *parent; struct device_private *p; struct kobject kobj; const char *init_name; /* initial name of the device */ const struct device_type *type; struct mutex mutex; /* mutex to synchronize calls to * its driver. */ struct bus_type *bus; /* type of bus device is on */ struct device_driver

转:从printf谈可变参数函数的实现

北战南征 提交于 2019-12-28 13:51:03
原文作者:戎亚新 摘要:一直以来都觉得printf似乎是c语言库中功能最强大的函数之一,不仅因为它能格式化输出,更在于它的参数个数没有限制,要几个就给几个,来者不拒。printf这种对参数个数和参数类型的强大适应性,让人产生了对它进行探索的浓厚兴趣。 关键字:printf, 可变参数 1. 使用情形 int a =10; double b = 20.0; char *str = "Hello world"; printf("begin print\n"); printf("a=%d, b=%.3f, str=%s\n", a, b, str); ...    从printf的使用情况来看,我们不难发现一个规律,就是无论其可变的参数有多少个,printf的第一个参数总是一个字符串。而正是这第一个参数, 使得它可以确认后面还有有多少个参数尾随。而尾随的每个参数占用的栈空间大小又是通过第一个格式字符串确定的。然而printf到底是怎样取第一个参数后 面的参数值的呢,请看如下代码 2. printf 函数的实现 //acenv.h typedef char *va_list; #define _AUPBND (sizeof (acpi_native_int) - 1) #define _ADNBND (sizeof (acpi_native_int) - 1) #define _bnd(X

STM32系统滴答_及不可不知的延时技巧

本小妞迷上赌 提交于 2019-12-28 10:39:48
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 下面为大家介绍一个曾见过的在裸机系统中,非阻塞延时的巧妙设计,当时它是被用在一导航影音娱乐系统的 MCU 驱动软件中,在此我对其作了一定的改动。 此章节涉及到 STM32 内容不多,以软件为主。 此延时软件的设计可以直接进行 10 、 50 、 100ms 及 1s 的查询定时,并且当若需其它时间要求的定时或延时可以很方便的自己编写软件很简单方便设定。 首先需要设置 SysTick 定时中断为 10MS 进入一次。然后在定时中断函数中作如下处理 void SysTick_Handler(void) { bTemp10Msec = TIMER_SET; ++gTimer.Tick10Msec; if (0 == (gTimer.Tick10Msec % 5)) { bTemp50Msec = TIMER_SET; } if (0 == (gTimer.Tick10Msec % 10)) { bTemp100Msec = TIMER_SET; } if (100 == gTimer.Tick10Msec) { gTimer.Tick10Msec = 0; bTemp1Sec = TIMER_SET; } } gTimer 是定义的一全局结构体变量, Timer_Struct gTimer;

strchr函数

℡╲_俬逩灬. 提交于 2019-12-28 01:25:47
strchr函数 (2011-09-23 08:53:12) 转载 ▼ 标签: 杂谈 分类: ACM-study 函数名称: strchr 函数原型: char* strchr(char* str,char ch); 函数功能: 找出str指向的字符串中第一次出现字符ch的位置 函数返回: 返回指向该位置的指针,如找不到,则返回空指针 参数说明: str-待搜索的字符串,ch-查找的字符 所属文件: <string.h> #include <string.h> #include <stdio.h> int main() { char string[15]; char *ptr, c= 'r '; strcpy(string, "This is a string "); ptr=strchr(string, c); if (ptr) printf( "The character %c is at position: %d\n ",c,ptr-string); else printf( "The character was not found\n "); return 0; } --------------------------------- 1.函数的使用 The strchr() function searches for the first occurrence of a

二叉树创建

萝らか妹 提交于 2019-12-28 00:41:56
typedef struct BiTNode { /* data */ TElemType data ; struct BiTNode * lchild , * rchild ; } BiTNode , * BiTree ; void createBitree ( BiTree * T , char list [ ] [ 3 ] ) { static int i = 0 ; if ( strcmp ( list [ i ] , "#" ) == 0 ) { i ++ ; * T = NULL ; return ; } * T = ( BiTNode * ) malloc ( sizeof ( BiTNode ) ) ; if ( ! * T ) { exit ; } printf ( "%d\n" , * T ) ; printf ( "%d\n" , atoi ( list [ i ] ) ) ; ( * T ) -> data = atoi ( list [ i ] ) ; i ++ ; createBitree ( & ( * T ) -> lchild , list ) ; createBitree ( & ( * T ) -> rchild , list ) ; } char array [ ] [ 3 ] = { "12" , "2" , "#" , "4" , "#"

system函数

妖精的绣舞 提交于 2019-12-27 21:33:38
相关函数 fork,execve,waitpid,popen 表头文件 #include<stdlib.h> 定义函数 int system(const char * string); 函数说明 system() 会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令,此命>令执行完后随即返回原调用的进程。在调用system()期间SIGCHLD 信号会被暂时搁置,SIGINT和SIGQUIT 信号则会被忽略。 返回值 =-1:出现错误 =0:调用成功但是没有出现子进程 >0:成功退出的子进程的id 如 果system()在调用/bin/sh时失败则返回127,其他失败原因返回-1。若参数string为空指针(NULL),则返回非零值>。 如果system()调用成功则最后会返回执行shell命令后的返回值,但是此返回值也有可能为 system()调用/bin/sh失败所返回的127,因此最好能再检查errno 来确认执行成功。 附加说明 在编写具有SUID/SGID权限的程序时请勿使用system(),system()会继承环境变量,通过环境变量可能会造成系统安全的问题。 范例 #i nclude<stdlib.h> main() { system(“ls -al /etc/passwd /etc/shadow”);

递归下降法的语法分析器-3-编译原理

吃可爱长大的小学妹 提交于 2019-12-27 21:18:48
递归下降法的语法分析器 一、实验目的 掌握语法分析器的构造原理,掌握递归下降法的编程方法。 二、实验内容 用 递归下降法 编写一个语法分析程序,使之与词法分析器结合,能够根据语言的上下文无关文法,识别输入的单词序列是否文法的句子。(注意,需要改写文法,消除左递归等) program → block block → { stmts } stmts →  stmt stmts | e stmt → id = expr ; | if ( bool ) stmt | if ( bool ) stmt else stmt | while ( bool ) stmt | do stmt while ( bool ) ; | break ; | block bool → expr < expr | expr <= expr | expr > expr | expr >= expr | expr expr → expr + term | expr - term | term term → term * factor | term / factor | factor factor → ( e xpr ) | id | num   三、实验要求 1.个人完成,提交实验报告。 2.实验报告中给出采用测试源代码片断,及其对应的最左推导过程(形式可以自行考虑)。 程序片断 { i = 2; while (i

int main(int argc,char* argv[])详解

戏子无情 提交于 2019-12-27 17:55:01
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> argc是命令行总的参数个数 argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数 命令行后面跟的用户输入的参数,比如: int main(int argc, char* argv[]) { int i; for (i = 0; i<argc; i++) cout<<argv[i]<<endl; cin>>i; return 0; } 执行时敲入 F:\MYDOCU~1\TEMPCODE\D1\DEBUG\D1.EXE aaaa bbb ccc ddd 输出如下: F:\MYDOCU~1\TEMPCODE\D1\DEBUG\D1.EXE aaaa bbb ccc ddd -------------------------------------------------------------------- char *argv[]是一个字符数组,其大小是int argc,主要用于命令行参数 argv[] 参数,数组里每个元素代表一个参数; 比如你输入 test a.c b.c t.c 则 argc = 4 argv[0] = "test" argv[1] = "a.c" argv[2] = "b.c" argv[3] = "t.c" -------------------------------