
c
michael019
这个作者很懒,什么都没留下…
展开
-
c 大小端问题
背景知识: 大小端模式(Endian)的这个词出自Jonathan Swift书写的《格列佛游记》。这本书根据将鸡蛋敲开的方法不同将所有人分为两类,从圆头开始将鸡蛋敲开的人被归为Big Endian,从尖头开始将鸡蛋敲开的人被归为Littile Endian。 计算机中的应用: 大端方式将高位存放在低地址,小端方式将低位存放在高地址。采用大端方式 进行数据存放符合人类的正常思维,而采用小端方式原创 2015-07-06 17:02:33 · 558 阅读 · 0 评论 -
stdout 与 stderr区别
stderr,可以在编译阶段输出, stdout必须在运行时刻。stdout可以重定向,stderr不可以。下面程序的输出是什么?(intel笔试2011) int main() { fprintf(stdout,”Hello “); fprintf(stderr,”World!”); return0; }原创 2015-07-30 18:05:09 · 536 阅读 · 1 评论 -
C语言——计算文件大小(一)
#define _CRT_SECURE_NO_WARNINGS#define PATH "C:\\Users\\michael\\Desktop\\mima.txt"#include <stdlib.h>#include <stdio.h>/** @brief 方法一:计算文件大小,单位是字节* @param()* @return int 文件大小*/int getFileSize(原创 2015-07-31 11:39:19 · 4346 阅读 · 3 评论 -
宽字符文本的处理
背景:在将一个xls文件保存为文本文件时,有两种选择。 当处理一个Unicode 格式的文本文件时,fopen,fgetc等函数不可以了,需要用到wfopen,fgetwc函数。原创 2015-07-31 16:48:01 · 472 阅读 · 0 评论 -
文本文件与二进制文件
1.EOF是文本文件结束的标志。在文本文件中,数据是以字符的ASCⅡ代码值的形式存放,普通字符的ASCⅡ代码的范围是32到127(十进制),EOF的16进制代码为0xFF(十进制为-1),因此可以用EOF作为文件结束标志。 2.当把数据以二进制形式存放到文件中时,就会有-1值的出现,因此不能采用EOF作为二进制文件的结束标志。 3.为了能同时处理这两种文件,引入feof函数,int feof(F原创 2015-07-31 11:33:50 · 492 阅读 · 0 评论 -
二进制文件加密
背景: 1.bin文件,exe文件,图片文件等都可以使用二进制加密方式进行加密。 2.使用while循环来取代for循环进行字符加密。 3.exe文件加密解密的应用:先将exe文件伪装成txt文件,避免杀毒软件检测,再通过解密,txt–>exe#define _CRT_SECURE_NO_WARNINGS#define SRC_PATH "C:\\Users\\michael\\Deskto原创 2015-08-03 14:27:54 · 10858 阅读 · 0 评论 -
C语言——计算文件大小(二)
接上篇,打开文件的方式是r还是rb,对文件大小的计算结果有影响。具体是因为fgetc函数对回车字符的处理问题。 二进制文件与文本文件的区别(windows) 区别:读取时,会将\r\n解析为\n 写入时,会将\n解析为\r\n 二进制文件与文本文件的区别(linux) 无区别 所以,以文本方式打开文件时,遇到一个回车,文件大小减少1.说明:测试文件不论格式,二进制和文本文件均测试过,不影响结果#de原创 2015-07-31 15:37:44 · 855 阅读 · 0 评论 -
文本文件加密解密(一)
#define _CRT_SECURE_NO_WARNINGS#define SRC_PATH "C:\\Users\\michael\\Desktop\\123.txt"#define CODE_PATH "C:\\Users\\michael\\Desktop\\123_code.txt"#define DECODE_PATH "C:\\Users\\michael\\Desktop\\1原创 2015-07-31 18:00:15 · 1446 阅读 · 0 评论 -
文件加解密(二)——使用密码
#define _CRT_SECURE_NO_WARNINGS#define SRC_PATH "C:\\Users\\michael\\Desktop\\yzh.txt"#define CODE_PATH "C:\\Users\\michael\\Desktop\\yzh_code.txt"#define DECODE_PATH "C:\\Users\\michael\\Desktop\\y原创 2015-08-03 10:48:13 · 416 阅读 · 0 评论 -
二进制文件切割与合并
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#define PATH "C:\\Users\\michael\\Desktop\\切割合并\\PIS.exe"#define PATH_MERGE "C:\\Users\\michael\\Desktop\\切割合并\\PIS_merge.exe"/*原创 2015-08-04 11:35:24 · 4234 阅读 · 0 评论 -
多线程应用(五)——线程操作函数
#include <stdio.h>#include <stdlib.h>#include <Windows.h>#include <process.h>DWORD WINAPI test(void * p){ int i = 0; while (++i) { printf("%d\n", i); if (i > 100000)原创 2015-08-21 17:40:47 · 278 阅读 · 0 评论 -
dll 设计与调用
**dll作为程序一个部分,可以理解为系统中的模块,被嵌入调用以完成某一特定功能。 .dll文件:描述的是函数接口,以及具体的函数接口入口地址信息 .lib文件:是对dll的资源描述文件** 如何调用dll文件? 方法一:借助vs2013编译器 1.将生成的dll资源(.h,.dll,.lib文件)拷贝至当前测试工程目录下,如:Debug文件夹的同一级目录。 2.添加.h文件到当前工程中原创 2015-10-05 00:13:42 · 586 阅读 · 0 评论 -
指针做函数参数——高效C语言
1.指针做函数参数——高效 2.思维扩展,谁为main()函数初始化环境,准备的内存空间?指针做函数参数需求1:打印一个一维数组的各个元素 定义函数接口 1.void PrintArray_1(int a[10]); 2.void PrintArray_2(int a[], int len); 3.void PrintArray_3(int *pArray, int len);//效率最高原创 2015-10-03 11:20:51 · 563 阅读 · 0 评论 -
函数模板
/* 1 函数模板可以像普通函数一样被重载 2 C++编译器优先考虑匹配普通函数 3 如果函数模板可以产生一个更好更精确的匹配,那么选择模板 4 可以通过空模板实参列表的语法限定编译器只匹配模板函数 *//* 函数模板不允许自动类型转化,隐式的类型转换编译器会报错 普通函数能够进行自动类型转换 */#include <iostream>using std::cout;using原创 2015-10-05 10:02:32 · 306 阅读 · 0 评论 -
C——生成log文件
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <time.h>void writelog(const char *log){ time_t tDate; struct tm *eventTime; time(&tDate); eventTime = loc原创 2015-11-06 15:17:05 · 890 阅读 · 0 评论 -
文件处理——文件重定向(一)
#define _CRT_SECURE_NO_WARNINGS#include <stdlib.h>#include <stdio.h>void main(){ char str[100] = { 0 }; gets(str); system(str);}1.运行程序,生成exe文件。2.dos命令下,切换到debug目录下2.1 cmd后,输入d:,2.2 cd原创 2015-07-30 14:56:39 · 687 阅读 · 0 评论 -
文件处理——文件重定向(二)
1.stderr 不可以重定向 2.freopen 函数实现重定向,不需要借助dos。#define _CRT_SECURE_NO_WARNINGS#define OUTPATH "C:\\Users\\michael\\Desktop\\0730.txt"#define INPATH "C:\\Users\\michael\\Desktop\\ipconfig.txt"#include <s原创 2015-07-30 17:52:31 · 300 阅读 · 0 评论 -
fgets,fputs,fprintf,fscanf
主要讨论fgets,fputs ,fprintf,fscanf与gets,puts,printf,scanf区别1.stdin stdout,stderr说明 简单讲,FILE * 类型指针 stdin —-默认对应是键盘,键盘是文件一种,设备文件 stdout —默认对应是显示器,也是文件一种 stderr—默认对应是显示器 2.fputs(const原创 2015-07-30 17:33:37 · 588 阅读 · 0 评论 -
Setjmp 与longjmp
Setjmp 与longjmp1.这两个函数是c语言特有的函数2.setjmp-longjmp组合的用处类似于游戏中的存盘读盘功能,经常被用于类似C++的异常恢复操作。例子演示://int setjmp(jmp_buf envbuf);//setjmp函数用缓冲区envbuf保存系统堆栈的内容,以便后续的longjmp函数使用.setjmp函数初次启用时返回0值//void longjm翻译 2015-07-10 10:16:53 · 357 阅读 · 0 评论 -
指针数组与数组指针
#include <stdio.h>#include <stdlib.h>/* * @brief 演示的是如何打印指针数组元素 * @param() * @return void */void printPointerArrayElems(){ //指针数组,管理地址,按照顺序执行指令 char* str[3] = {"notepad", "calc", "ipconf原创 2015-07-10 17:24:29 · 393 阅读 · 0 评论 -
c/c++混合编程
背景: 1.C++之父在设计C++之时,当时已经存在了大量优秀的C代码,为了支持C以及利用现成的C库,需要在C++中尽可能多的支持C,extern “C”就是其中的策略之一。 2.C++程序中经常需要调用底层的库函数,而底层驱动大多使用的是C语言开发的。 3.C编译器与C++编译器对函数的处理不同。C++中支持函数的重载功能, 例如:void add(int,int);C编译器可能处理成类似原创 2015-07-13 09:23:31 · 361 阅读 · 0 评论 -
不使用中间变量实现变量交换
#include <stdio.h>#include <stdlib.h>void main(){ //way1:使用中间变量 int a = 10; int b = 20; printf("交换之前:a=%d b=%d\n", a, b); int temp; temp = a; a = b; b = temp; pri原创 2015-07-13 17:27:40 · 421 阅读 · 0 评论 -
vc编译器与 gcc编译器区别之一
两种编译器的区别之一:数组的定义 CodeBlocks GCC#include <stdio.h>#include <stdlib.h>//栈空间上实现动态数组int main(){ int num; printf("请输入数组的长度:"); scanf("\n%d",&num); int a[num] ; int i =0; for(i=原创 2015-07-14 09:12:36 · 841 阅读 · 0 评论 -
数组元素排序
1.无序数组——顺序查找法,很无语的查找法 2.有序数组——二分查找法#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>void sortData(int *pArray, int length, int state){ if (state == 0) { } else if原创 2015-07-14 14:04:03 · 522 阅读 · 0 评论 -
数组静态库调用
目标:将一个数组静态库文件调用起来#include <stdlib.h>#include <stdio.h>#include "array.h"#pragma comment(lib, "array_lib.lib")void main(){ struct QueryResult res; MyArray array; init(&array); add_e原创 2015-07-15 16:10:21 · 590 阅读 · 0 评论 -
C语言——文件分类
1.按存储介质:1.1 普通文件:存储介质文件,如磁盘,磁带 1.2 设备文件:非存储介质,如键盘,打印机,显示器2.按文件的逻辑结构:2.1 流式文件:由一个个字符(字节)数据顺序组成,如视频流 2.2 记录文件:有具有一定结构的记录组成,如word文件,pdf文件3.按数据的组织形式:3.1 文本文件:ASCII文件,每个字节存放一个字符的ASCII 3.2 二进制文件:数据按其在内存中的原创 2015-07-29 21:26:08 · 4497 阅读 · 0 评论 -
文件读取——以字符方式读取文本文件
#define _CRT_SECURE_NO_WARNINGS#define PATH "C:\\Users\\michael\\Desktop\\123.txt"#include <stdlib.h>#include <stdio.h>void main(){ FILE *pFile = NULL; //typedef struct _iobuf FILE; pFile = f原创 2015-07-30 10:34:51 · 741 阅读 · 0 评论 -
文件处理——输出文件到屏幕显示
#define _CRT_SECURE_NO_WARNINGS#define PATH "C:\\Users\\michael\\Desktop\\mima.txt"#include <stdlib.h>#include <stdio.h>/** @brief 方法一:windows 命令形式 type 文件路径* @param()* @return void*/void showFi原创 2015-07-30 11:30:01 · 961 阅读 · 0 评论 -
C语言——缓冲区
#define _CRT_SECURE_NO_WARNINGS#define PATH "C:\\Users\\michael\\Desktop\\buffer.txt"#include <stdlib.h>#include <stdio.h>void main(){ FILE *path = fopen(PATH, "w"); if (NULL == path)原创 2015-07-30 14:09:34 · 503 阅读 · 0 评论 -
文件读写——以字符方式读取与写入文件
将一个文本文件以字符方式打开,并且以字符方式写入另一个文本中#define _CRT_SECURE_NO_WARNINGS#define PATH "C:\\Users\\michael\\Desktop\\mima.txt"#define WPATH "C:\\Users\\michael\\Desktop\\mytxt.txt"#include <stdlib.h>#include <s原创 2015-07-30 10:47:02 · 624 阅读 · 0 评论 -
三维数组用法
一维数组:int a[5]; 指针表示: int *p = a; 二维数组:int a[4][5]; 指针表示: int (*p)[5] = a; 三维数组:int a[3][4][5];指针表示: int (*p)[4][5] = a; p表示指向数组的行指针#include <stdio.h>#include <stdlib.h>//这里使用的是数组指针法打印三维数组元素vo原创 2015-07-13 11:36:16 · 3689 阅读 · 0 评论