char函数

mem系列与str系列函数了解

匿名 (未验证) 提交于 2019-12-03 00:28:02
系列函数通常处理内存内容,而Str通常处理字符串,这俩个家族系列函数经常会使用,在网上搜集了一些资料进行了整理,方便自己以后查阅,下面介绍了memcpy,strcpy,strncpy,memmove,memcmp,strcmp,strcat,strstr,strtok等函数: 函数原型 :void *memcpy(void *dest, const void *src,size_t n); 函数功能 :内存拷贝;将src指向内存地址的连续N个指针位置的内容拷贝至dest指针指向的位置 函数返回 :无 参数说明 : dest ― 目的内存空间指针 src ― 源内存 n ― 拷贝指针位置个数 # include <memory> include <iostream> include < string > void main() { char * src = “Hello Frankie World !”; char * dest = new char [ 50 ]; memset (dest, 0 , 50 ); memcpy (dest,src, 7 ); std :: cout <<”dset值为:”<< std ::endl; Out(dest); } 函数原型 :void * memccpy(void *dest, void *src, unsigned char c,

exec函数

匿名 (未验证) 提交于 2019-12-03 00:28:02
当进程调用一种exec函数时,该进程执行的程序完全替换为新程序,新程序从main函数开始执行,调用exec并不创建新进程,所以前后的进程ID并未改变。exec只是用磁盘上的一个新程序替换当前进程的正文段、数据段、堆和栈。 #include <unistd.h> int execl(const char *pathname, const char *arg0, ...); int execv(const char *pathname, char *const argv[]); int execle(const char *pathname, const char *arg0, ...); int execve(const char *pathname, char *const argv[], char *const envp[]); int execlp(const char *filename, const char *arg0, ..); int execvp(const char *filename, char *const argv[]); int fexecve(int fd, char *const argv[], char *const envp[]); 出错返回-1,成功不返回 前4个函数以路径名作为参数,后2个以文件名作为参数,最后一个以文件描述符作为参数。

解决 undefined reference to 问题

匿名 (未验证) 提交于 2019-12-03 00:27:02
首先这篇文章总结得不错 https://blog.csdn.net/stpeace/article/details/73302833 然后依然会碰到问题,这时候就要看具体的函数签名了 Name Mangling in C++ 参考 http://blog.51cto.com/hipercomer/855223 name demangling C++的name mangling技术一般使得函数变得面目全非,而很多情况下我们在查看这些符号的时候并不需要看到这些函数name mangling之后的效果,而是想看看是否定义了某个函数,或者是否引用了某个函数,这对于我们调试程序是非常有帮助的。 所以需要一种方法从name mangling之后的符号变换为name mangling之前的符号,这个过程称之为name demangling.事实上有很多工具提供这些功能,最常用的就是c++file命令,c++filt命令接受一个name mangling之后的符号作为输入并输出demangling之后的符号。例如: [lichao @sg01 name_mangling] $ c++filt _Z9test_funcRiPKcdSsf test_func(int&, char const*, double, std: :basic_string<char , std: :char_traits

Oracle数据库练习题(3)

匿名 (未验证) 提交于 2019-12-03 00:27:02
一、表展示 二、 练习题及答案 31. 找出有佣金的员工的不同工作,按降序排列 select job, comm from empgj where comm is not null order by comm desc; select job, comm from empgj where comm != 0 order by comm desc; SQL中判断非空(null)不能用等号,因为null在SQL中被看作特殊符号,必须使用关键字 is和not,如第一句所示 排序写法:order by +字段名+ 排序方式(asc/desc) asc:按升序排列,也是默认排序可省略不写 desc:按降序排列 32. 找出不收取佣金或收取的佣金低于500 的员工 select ename, comm from empgj where nvl(comm, 0) = 0 or comm < 500; 33. 找出各月倒数第3 天受雇的所有员工并且按月降序排序 select ename, hirdate from empgj where last_day(hiredate) - 2 = hiredate order by to_char(hiredate, 'mm') desc; 这里to_char()函数取出了雇佣日期的月份,因为在向表插数据时已经规定好了格式: insert into

使用tolua++实现lua和c++的互调

匿名 (未验证) 提交于 2019-12-03 00:26:01
首先是准备工作: 1、下载一个tolua++和lua。 2、在VS中配置引用。 , 注意:以上配置的路径一定保证正确,这些只是我的路径。 接下来就是准备写代码了。 1、在win下创建一个bat文件,用于使用tolua++ 的exe,这个只是替代功能,酷爱命令行的朋友也可以通过命令行进入tolua++.ext执行。 ..\..\tolua++-1.0.93\bin\tolua++ -n export -o ..\lua_opearation.cpp Opearation.pkg pause 2、c++中类的声明和创建。(附上.h的代码) #ifndef __TestClass___Operation__ #define __TestClass___Operation__ #include <iostream> int getValue(); class Opearation{ int num; public: static Opearation* getInstance(); int subNum; Opearation(); ~Opearation(); int Add(int a, int b); const char* Add(int a, const char* str); const char* Add(const char * str1, const char *

编译原理实现计算器

匿名 (未验证) 提交于 2019-12-03 00:26:01
要求 计算器接受四则运算表达式为输入(如下所示)。如果表达式语法正确,则输出计算结果,否则报错,指出错误位置及原因。 “;”结束; 加减乘除 ;支持括号; ; 数字和字母 print() 函数,输出并换行; print() 函数不仅可以输出变量,还可以直接输出表达式的值,例如 print (1+2) ; C/C++、Java ,,第三方库。 ,corner cases。例如除零; 思路说明 一、中缀表达式求值 1 MyStack.h #pragma once #include <iostream> #define MAX 100 using namespace std; template <class T> class MyStack { public: T data[MAX]; int top; public: void init(); // 初始化栈 bool empty(); // 判断栈是否为空 T getTop(); // 读取栈顶元素(不出栈) void push(T x); // 进栈 T pop(); // 出栈 }; template<class T> void MyStack<T>::init() { this->top = 0; } template<class T> bool MyStack<T>::empty() { return this->top ==

设置类的成员的对齐

匿名 (未验证) 提交于 2019-12-03 00:25:02
#include<iostream> using namespace std; #pragma pack(push) #pragma pack(4)//结果是12,,, #pragma pack(1)结果是9。。。成员函数不占空间,静态成员也不占空间 class CTest { }; char CTest::s_chData='\0'; #pragma pack(pop) int main(int argc,char** argv) { } 文章来源: 设置类的成员的对齐

qDebug输出QString

匿名 (未验证) 提交于 2019-12-03 00:22:01
原文地址:: https://blog.csdn.net/lian_gong2009/article/details/50468887 [cpp] view plain copy qDebug( 应该使用如下函数转换一下: const char * qPrintable(const QString & str) Returns str as a const char *. This is equivalent to str.toLocal8Bit().constData(). 文章来源: qDebug输出QString

操作符与表达式――单引号和双引号

匿名 (未验证) 提交于 2019-12-03 00:22:01
C语言中的单引号用来表示字符字面量 - ‘a’表示字符字面量,在内存中占1个字节。‘a’+1表示‘a’的ASCII码加1,结果为‘b’。 C语言中的双引号用来表示字符串字面量 - “a”表示字符串字面量,在内存中占2个字节。“a”+1表示指针运算,结果指向“a”结束符‘\0’ 示例代码:单引号和双引号的本质 #include <stdio.h> int main() { char * p1 = 1 ; //Error char * p2 = '1' ; //Error char * p3 = "1" ; printf ( "%s, %s, %s" , p1 , p2 , p3 ); printf ( '\n' ); //Error printf ( "\n" ); return 0 ; } 编译得到警告信息 test.c:6: warning: initialization makes pointer from integer without a cast test.c:7: warning: initialization makes pointer from integer without a cast test.c:12: warning: passing argument 1 of ‘printf’ makes pointer from integer without a

strcpy、memcpy和memset之间的区别

匿名 (未验证) 提交于 2019-12-03 00:22:01
今天刷题时遇到了这个问题,记录一下。 strcpy 比较简单,就是拷贝字符串,遇到'\0'时结束拷贝 。 memcpy 用来做内存拷贝,可以拷贝任何数据类型的对象并指定拷贝数据的长度:char a[100],b[50]; memcpy(b, a, sizeof(b)); 总结一下: strcpy和memcpy主要有以下3方面的区别。 复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。 复制的方法不同。strcpy不需要指定长度,它遇到字符串结束符"\0"便结束。memcpy则是根据其第3个参数决定复制的长度。 用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy。 //注意:如果用的是sizeof(a),则会造成内存泄露。 比较复杂点的是 memset ,用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为 ‘ ’或 ‘\0’,比如: char a[100];memset(a, '\0', sizeof(a)); 另外比较方便的是对结构体的操作, memset可以方便的清空一个结构类型的变量或数组: 比如有结构体struct sample_strcut stTest,一般清空结构体的话得用如下方式: struct sample_struct { char csName