char函数

关于file_operations结构体

时光总嘲笑我的痴心妄想 提交于 2020-01-30 11:08:58
结构体 file_operations 在头文件 linux/fs.h 中定义,用来存储驱动内核模块提供的对设备进行各种操作的函数的指针。该结构体的每个域都对应着驱动内核模块用来处理某个被请求的 事务的函数的地址。 举个例子,每个字符设备需要定义一个用来读取设备数据的函数。结构体 file_operations 中存储着内核模块中执行这项操作的函数的地址。一下是该结构体 在内核 2.6.5 中看起来的样子: struct file_operations { struct module *owner; loff_t(*llseek) (struct file *, loff_t, int); ssize_t(*read) (struct file *, char __user *, size_t, loff_t *); ssize_t(*aio_read) (struct kiocb *, char __user *, size_t, loff_t); ssize_t(*write) (struct file *, const char __user *, size_t, loff_t *); ssize_t(*aio_write) (struct kiocb *, const char __user *, size_t, loff_t); int (*readdir)

ctypes给扩展模块中的函数传递数组和结构体

大城市里の小女人 提交于 2020-01-30 02:56:27
传递数组 楔子 下面我们来看看如何使用ctypes传递数组,这里我们只讲传递,不讲返回。因为C语言返回数组给python实际上会存在很多问题,比如:返回的数组的内存由谁来管理,不用了之后空间由谁来释放,事实上ctypes内部对于返回数组支持的也不是很好。因此我们一般不会向python返回一个C语言中的数组,因为C语言中的数组传递给python涉及到效率的问题,python中的列表传递直接传递一个引用即可,但是C语言中的数组过来肯定是要拷贝一份的,所以这里我们只讲python如何通过ctypes给扩展模块传递数组,不会介绍扩展模块如何返回数组给python。 如何传递 我们知道python中没有数组,或者说C中的数组在python中是一个list,我们可以通过list来得到数组,方式也很简单。 from ctypes import * # 创建一个数组,假设叫[1, 2, 3, 4, 5] a5 = (c_int * 5)(1, 2, 3, 4, 5) print(a5) # <__main__.c_long_Array_5 object at 0x00000162428968C0> # 上面这种方式就得到了一个数组 # 当然还可以使用list a5 = (c_int * 5)(*range(1, 6)) print(a5) # <__main__.c_long_Array_5

谭浩强C++第二版,第六章课后习题

こ雲淡風輕ζ 提交于 2020-01-30 02:40:51
#include "includes.h" int arrays[20]; void swap(int& a, int& b) { int temp; temp = a; a = b; b = temp; return; } void swap_str(char* &a, char* &b) { char *temp; temp = a; a = b; b = temp; return; } void Question6_1(int &a,int &b,int &c) { cout << "6-1" << endl; if (a > b) swap(a, b); if (b > c) swap(b, c); if (a > c) swap(a, c); cout << a << b << c<<endl; return; } void Question6_2(char *a, char *b, char *c) { if (strcmp(a, b)> 0) swap_str(a, b); if (strcmp(a, c) > 0) swap_str(a, c); if (strcmp(b, c) > 0) swap_str(b, c); cout << a << b << c << endl; return; } void input_10_number() { int i = 0

编译原理实验一 词法分析

烂漫一生 提交于 2020-01-29 12:28:57
一、 实验目的 编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的内部编码及单词符号自身值。 二、 实验题目 如源程序为C语言。输入如下一段: main() { int a=-5,b=4,j; if(a>=b) j=a-b; else j=b-a; } 要求输出如下: (” main ” , 1 , 1 ) (”(” , 5 ) (”)” , 5 ) (” { ” , 5) (” int ” , 1 , 2 ) (” a ” , 2 ) (” = ” , 4 ) (” -5 ” , 3 ) (” , ” , 5 ) (” b ” , 2 ) (” = ” , 4 ) (” 4 ” , 3 ) (” , ” , 5 ) (” j ” , 2 ) (” ; ” , 5 ) (” if ” , 1 ) (”(” , 5 ) (” a ” , 2 ) (” >= ” , 4 ) (” b ” , 2 ) (”)” , 5 ) (” j ” , 2 ) (” = ” , 4 ) (” a ” , 2 ) (” - ” , 4 ) (” b ” , 2 ) (” ; ” , 5 ) (” else ” , 1 ) (” j ” , 2 ) (” = ” , 4 ) (” b ” , 2 ) (” - ” ,

sqlite3基础

橙三吉。 提交于 2020-01-29 05:32:55
要使用sqlite,首先需要添加库文件libsqlite3.dylib。当你搜索libsqlite3关键字时,会发现还有一个libsqlite3.0.dylib的库文件,这里还是建议添加libsqlite3.dylib,原因在于libsqlite3.dylib是一个替身文件,它总是指向最新的sqlite3动态库;假如出现了新的动态库libsqlite3.1.dylib,那么libsqlite3.dylib将指向它,而libsqlite3.0.dylib无法指向。 在对sqlite数据库进行操作前先声明一个sqlite3类型的对象: sqlite3 *db; sqlite3_open — 创建并打开一个sqlite数据库 SQLITE_API int sqlite3_open( const char *filename, /* Database filename (UTF-8) */ sqlite3 **ppDb /* OUT: SQLite db handle */ ); sqlite3_close — 关闭一个sqlite数据库 SQLITE_API int sqlite3_close(sqlite3*); 示例1:创建并打开sqlite数据库 NSArray *paths = NSSearchPathForDirectoriesInDomains

VC++2005 CString和char*的相互转换

我是研究僧i 提交于 2020-01-29 05:06:43
首先声明我不是一个高手,而是一个初学者,文章同样也是一个初学者对于CString和char*转换的理解。 因为需要,接触C++一段时间了,其中最为困扰我的问题就是在使用C++的过程中CString和char*的转换,在网上搜索了一下,看到问这个问题的人挺多的。我使用的平台是Win2003+VC 2005,本来这个很简单的问题稍微复杂了一点在2005里面。 在我的工程里面要集成一个用C开发的程序,用VC做windows窗体的界面,在C的函数中有不少是使用char*作为参数的,因此有一个必不可少的步骤就是把CString转换为shar*字符串。 作为一个初学者,遇到这个问题,首先是在baidu上搜索了一下转换的方法,有很多结果,别人也说有效,但是我把它放在我的代码里面的时候,就是出现错误。下面是我的解决办法。 使用CString的GetBuffer方法 CString origCString("Hello,World"); char* CharString = origCString.GetBuffer(origCString.GetLength()+1); 网上的很多文章说的都是这个方法,但是我在VC++2005中编译得到下列信息 Error 1 error C2440: 'initializing' : cannot convert from 'wchar_t *' to

实验报告(2019年6月12日)

拜拜、爱过 提交于 2020-01-29 04:54:17
c程序实验报告 姓名:黄志乾 实验地点:教学楼514教室 实验时间:4月30日 实验项目: 1、指针基础及指针运算 2、数据交换 3、输出指定行数的杨辉三角形 4、数组元素奇偶排列 一、实验目的与要求 1.指针基础及指针运算 ● 本实验旨在及爱情学生对指针数据类型的理解,熟悉指针的定义、通过指针间接访问变量 2.数据交换 ● 本实验旨在加强学生对指针类型作为函数参数传递的理解,通常将实参传递给形参时,有两种方式,即按值传递和按地址传递,其中指针类型参数即是按地址。 实验要求: ● 定义两个函数,分别为void swap1(int a ,int b)和void swawp2(int a,int b),用于交换a,b的值。 ● 从主函数中分别输入两个整型变量a、b ●从主函数中分别调用上述两个交换函数,并打印输出交换后a、b的结果 3.字符串翻转及字符串连接 ● 本实验旨在加强学生对字符指针以及将指针作为函数的返回类型的理解,并通过指针对字符串进行操作,通常来说,一个字符串在内存中是连续存放的,起开始地址为指向该字符串的指针值,字符串均以'\0'作为结束字符 实验要求 ●定义两个字符指针,通过gets()函数输入两个字符串 ●定义一个函数char reverse(char str),通过指针移动方式将字符串反转 ●定义一个函数char link(char str1,char *str2

基于C的文件操作

喜夏-厌秋 提交于 2020-01-29 03:02:30
在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之。 一、流式文件操作 这种方式的文件操作有一个重要的结构FILE,FILE在头文件stdio.h中定义如下: 1 typedef struct { 2 int level; /* fill/empty level of buffer */ 3 unsigned flags; /* File status flags */ 4 char fd; /* File descriptor */ 5 unsigned char hold; /* Ungetc char if no buffer */ 6 int bsize; /* Buffer size */ 7 unsigned char _FAR *buffer; /* Data transfer buffer */ 8 unsigned char _FAR *curp; /* Current active pointer */ 9 unsigned istemp; /* Temporary file indicator */ 10 short token; /* Used for validity checking */ 11 } FILE; /* This is the FILE object */ FILE这个结构包含了文件操作的基本属性

通过create_string_buffer、create_unicode_buffer让C语言具备修改字符串的能力

自作多情 提交于 2020-01-28 21:50:02
字符串的修改 我们知道C中不存在字符串这个概念,python中的字符串在C中也是通过字符数组来实现的。我们说在C中创建一个字符数组有两种方式: char *s1 = "hello world"; char s2[] = "hello world"; 这两种方式虽然打印的结果是一样的,并且s1、s2都指向了对应字符数组的首地址,但是内部的结构确是不同的。 1.char *s1 = "hello world";此时这个字符数组是存放在静态存储区里面的,程序编译的时候这块区域就已经确定好了,静态存储区在程序的整个运行期间都是存在的,主要用来存放一些静态变量、全局变量、常量。因此s1只能够访问这个字符数组,却不能够改变它,因为它是一个常量。而char s2[] = "hello world";,这种方式创建的字符数组是存放在栈当中的,可以通过s2这个指针去修改它。 2.char *s1 = "hello world";是在编译的时候就已经确定了,因为是一个常量。而char s2[] = "hello world";则是在运行时才确定。 3.char *s1 = "hello world";创建的字符数组存于静态存储区,char s2[] = "hello world";创建的字符数组存储于栈区,所以s1访问的速度没有s2快。 所以我们说 char *s

华为牛客网刷题笔记(一)

送分小仙女□ 提交于 2020-01-28 21:42:58
前言 春节因为新冠状病毒肺炎,无事可做,立志刷题。借此机会,学习下C++语言,如下是刷题记录,力争每道题都记录好思路和代码实现。 No.1 字符串最后一个单词的长度 题目描述 计算字符串最后一个单词的长度,单词以空格隔开。 输入描述: 一行字符串,非空,长度小于5000。 输出描述: 整数N,最后一个单词的长度。 示例1 输入 hello world 输出 5 思路 这个题目比较简单,用C语言的strtok找到空格,用另一个指针记录最后一次空格的位置 #include <stdio.h> #include <string.h> int main(int argc, char **argv) { char buf[5000]; char *p; char *pre; while(NULL != fgets(buf, sizeof(buf)-1, stdin)) { if(buf[strlen(buf)-1] == '\n') buf[strlen(buf)-1] = 0; p = strtok(buf, " "); pre = p; while(p != NULL) { pre = p; p = strtok(NULL, " "); } printf("%d\r\n", strlen(pre)); } return 0; } No2. 计算字符个数 题目描述 写出一个程序