char函数

C/C++执行外部程序(调用外部exe程序)

时间秒杀一切 提交于 2020-01-10 03:22:15
本文只做简单介绍,具体用法请参照MSDN。 C中的函数: 1.exec() 函数家族: exec() 家族的函数将会创建一个新的进程来执行程序。 _execl, _wexecl _execv, _wexecv _execle, _wexecle _execve, _wexecve _execlp, _wexeclp _execvp, _wexecvp _execlpe, _wexeclpe _execvpe, _wexecvpe 函数格式: intptr_t _?exec*( const char *cmdname, const char *arg0, ... const char *argn, NULL ); intptr_t _?execv*( const char *cmdname, const char *const *argv ); 2.spawn()函数家族: spawn() 家族的函数将会创建一个新的进程来执行程序。 _spawnl, _wspawnl _spawnv, _wspawnv _spawnle, _wspawnle _spawnve, _wspawnve _spawnlp, _wspawnlp _spawnvp, _wspawnvp _spawnlpe, _wspawnlpe _spawnvpe, _wspawnvpe 函数格式: intptr_t _

python之列表推导和生成器表达式

耗尽温柔 提交于 2020-01-10 00:49:17
首先来看一下代码: chars = "abcd" tmp = [] for char in chars: tmp.append(ord(char)) print(tmp) 这是一般的写法,将字符串中的每一个字符转换称ASCII码,然后存进一个tmp数组。 利用 列表推导的方式 : tmp = [ord(char) for char in chars] 输出:[97,98,99,100] 列表推导中也可以使用if和else。 当只有一个if时: chars = "abcd" tmp = [ord(char) for char in chars if ord(char)>=98] print(tmp) 输出:['b','c','d'] 额外提一下, 当然我们也可以利用filter和map达到相同的效果 : tmp = list(filter(lambda x:x>=98,map(ord,chars))) 这句话的意思是,使用map对chars中的每一个字符利用ord函数进行处理。再使用filter对这每一个字符的ASCII码进行过滤大于等于98的,最后将这些符合条件的值存进一个列表中。lambda x:x>98是一个 匿名函数 。 有一个if else时: chars = "abcd" tmp = [True if ord(char)>=98 else False for char

基于文件指针的文件操作

核能气质少年 提交于 2020-01-10 00:26:12
基于文件指针的文件操作(缓冲) linux的文件和文件描述符 linux中对目录和设备的操作都是文件操作,文件分为 普通文件,目录文件,链接文件和设备文件 。 普通文件 :也称磁盘文件,并且能够进行随机的数据存储 ( 能够自由 seek 定位到某一个位置 ) ; 管道: 是一个从一端发送数据,另一端接收数据的数据通道; 目录: 也称为目录文件,它包含了保存在目录中文件列表的简单文件。 设备: 该类型的文件提供了大多数物理设备的接口。它又分为两种类型: 字符型设备和块设备。 字符型设备 一次只能读出和写入一个字节的数据,包括调制解调器、终端、打印机、声卡以及鼠标; 块设备 必须以一定大小的块来读出或者写入数据,块设备包括 CD-ROM 、 RAM 驱动器和磁盘驱动器等 ,一般而言,字符设备用于传输数据,块设备用于存储数据。 链接: 类似于 Windows 的快捷方式和 Linux 里的别名,指包含到达另一个 文件路径的文件。 套接字: 在 Linux 中 , 套接字也可以当作文件来进行处理。 基于文件指针的文件操作函数是ANSI 标准函数库 的一部分。 1文件的创建,打开与关闭 原型为: #include <stdio.h> //头文件包含 FILE *fopen(const char *pach,const char *mode); //文件名 模式 int fclose(FILE

指针数组与指向指针的指针

巧了我就是萌 提交于 2020-01-09 21:56:44
指针数组与指向指针的指针 http://wlkc.gdqy.edu.cn/jpkc/portal/blob?key=173314 指针数组和数组指针的区别 http://allew.blog.163.com/blog/static/3374389720094148449239/ 指针数组[组图] http://school.cnd8.com/c/jiaocheng/9212.htm 函数指针和指针函数 http://lionwq.spaces.eepw.com.cn/articles/article/item/18258 ======================================== source 1 #include <stdio.h> int main(void) { char *ptr[4] = {"beijing", "shanghai", "tianjin", "chongqing"}; int i, *iptr[3], a[3]={1,2,3},b[3][2]={1,2,3,4,5,6}; for(i=0; i<4; i++) printf("%s/t", ptr[i]); printf("/n"); for(i=0; i<3; i++) iptr[i]=&a[i]; for(i=0; i<3; i++) printf("%d/t", *iptr[i]

C++: VC6转VC8出现问题:error C2664: “fopen”: 不能将参数 1 从“CString”转换为“const char *”

别来无恙 提交于 2020-01-09 18:15:27
其实还可能出现其它类似的问题,如: error C2664: “fopen”: 不能将参数 1 从“CString”转换为“const char *” error C2039: “strcpy”: 不是“ATL::CStringT<BaseType,StringTraits>”的成员 但是程序在VC6下编译得很好,经过研究发现是设置上有所不同。在VC6中,默认使用MBCS编码,即多字节字符;而VC8、VC7默认的是Unicode编码,所以... 关于这两种编码有何不同,我引用了网上的一篇文章,由于作者匿名,只能在此感谢: http://pc.nengbang.cn/group_thread/view/id-2603 在VC6中,默认 使用 MBCS编码,即多字节字符,实际就是支持大于0x80的ASCII码。这样, 一个 中文字可以表示为2个字节,GB2312就是这样表示的。 VC6的默认 安装 是不带UNICODE库的,要在VC6中写UNICODE程序,必须 安装 CRT和MFC的Unicode库。 要使你的程序支持Unicode,要在你的项目属性中去掉"_MBCS"宏定义,增加"UNICODE"和"_UNICODE"两个宏定义。(注意,这两个都应该加上,因为CRT和MFC 使用 UNICODE定义,而STL则使用_UNICODE) 如果你的程序是MFC的

C++ 编码问题

半腔热情 提交于 2020-01-09 06:33:04
一、 使用函数_tcscpy_s: CStringtheString( "This is a test" ); int sizeOfString = (theString.GetLength() + 1); LPTSTR lpsz = new TCHAR[ sizeOfString]; _tcscpy_s(lpsz, sizeOfString, theString); 最后再转换一下lpsz为const型的 LPTSTR在UNICODE环境下编译是wchar_t类型 二、 CString str =_T("Hello World!"); char szStr[256]= {0}; wcstombs(szStr,str, str.GetLength()); const char * p= szStr; 其实还可能出现其它类似的问题,如: error C2664: “fopen”: 不能将参数 1 从“CString”转换为“const char *” error C2039: “strcpy”:不是“ATL::CStringT<BaseType,StringTraits>”的成员 但是程序在VC6下编译得很好,经过研究发现是设置上有所不同。在VC6中,默认使用MBCS编码,即多字节字符;而VC8、VC7默认的是Unicode编码,所以... 关于这两种编码有何不同

指针函数与函数指针

淺唱寂寞╮ 提交于 2020-01-09 02:06:14
指针函数:->int*p(); 函数指针:->int (*p)(); 定义char 类型的指针,返回字符串: 指针函数:使用指针作为返回值的函数 //指针函数 #include<iostream> char *getchar(char); char *getchar(char c){ switch(c){ case 'A':return "apple"; case 'B' :return "banana"; case 'C': return "Cat"; case 'D': return "Dog"; default: return "Nome"; } } int main(){ char input; printf("请输入一个字母"); scanf("%c",&input); printf("%s\n",getchar(input)) ; return 0; } 函数指针; //指针函数 #include<iostream> int square(int num){ return num*num; } int main(){ int num; int (*fp)(int); printf("请输入一个整数:"); scanf("%d",&num); fp=square; printf("%d*%d=%d ",num,num,(*fp)(num));printf("%d*%d=

[C++]C++面试知识总结

只谈情不闲聊 提交于 2020-01-08 23:40:04
1.程序运行知识 1.1 内存布局和分配方式 C程序的内存布局如下: 静态存储区:存储全局变量和static变量,通常在程序编译期间已经分配好了。 BSS段:存放未初始化的static变量和全局变量 Data段:存放初始化过的static变量和全局变量 Text段:存储程序的二进制代码,程序代码区。   堆:程序运行时通过malloc申请的内存区存放在堆中,需要使用free来释放该内存空间,生存期在malloc和free之间。 栈:执行函数时,函数的局部变量存储在栈中,执行结束后自动释放该内存区域,栈内存分配运算内置与处理器指令集中。 C++程序的内存布局与C程序布局类似,区别是C++不再区分全局变量和静态变量是否已经初始化,全部存储在静态存储区;另外堆中存放new/delete申请释放的资源,而malloc和free申请的资源存放在自由存储区。 1.2 内存溢出原因 栈溢出:越界访问造成,例如局部变量数组越界访问或者函数内局部变量使用过多,超出了操作系统为该进程分配的栈的大小,还有递归函数层次过多超过了栈大小。 堆溢出:程序申请了资源但忘记释放该资源,造成内存泄露,累积泄露内存过多会造成内存溢出。 1.3 内存泄露和检测 C++内存泄漏检测内存泄露是指程序中动态分配了内存,但是在程序结束时没有释放这部分内存,从而造成那一部分内存不可用的情况。 动态内存泄露检测:检查new

P 1019 数字黑洞

佐手、 提交于 2020-01-08 23:05:56
转跳点: 🐏 1019 数字黑洞 给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字黑洞”之称的 6174 ,这个神奇的数字也叫 Kaprekar 常数。 例如,我们从 6767 开始,将得到 7766 - 6677 = 1089 9810 - 0189 = 9621 9621 - 1269 = 8352 8532 - 2358 = 6174 7641 - 1467 = 6174 ... ... 现给定任意 4 位正整数,请编写程序演示到达黑洞的过程。 输入格式: 输入给出一个 ( 区间内的正整数 N。 输出格式: 如果 N 的 4 位数字全相等,则在一行内输出 N - N = 0000 ;否则将计算的每一步在一行内输出,直到 6174 作为差出现,输出格式见样例。注意每个数字按 4 位数格式输出。 输入样例 1: 6767 输出样例 1: 7766 - 6677 = 1089 9810 - 0189 = 9621 9621 - 1269 = 8352 8532 - 2358 = 6174 输入样例 2: 2222 输出样例 2: 2222 - 2222 = 0000   这道题我取了一下巧,用来sscanf

C-当把数组传递给函数

无人久伴 提交于 2020-01-08 14:39:09
#include <stdio.h> /** * C语言中,数组的名称就是 一连串连续内存的起始地址, * 因此给数组传递给函数,传递的就是数组元素类型的指针 */ void hello_0(char msg[20]); void hello_1(char msg[]); void hello_2(char *msg); int main() { char msg[20] = "hello kitty"; char notice[40] = "this is a notice to kitty."; hello_0(msg); hello_1(msg); hello_2(msg); hello_0(notice); hello_1(notice); hello_2(notice); return 0; } void hello_0(char msg[20]) { printf("0 msg is [%s]\n", msg); } void hello_1(char msg[]) { printf("1 msg is [%s]\n", msg); } void hello_2(char *msg) { printf("2 msg is [%s]\n", msg); } 来源: https://www.cnblogs.com/luohaonan/p/12166421.html