1.Stack around the variable 'temp' was corrupted.
可能是temp数组的存取超出范围了
2.
字符串复制函数strcpy()
原型 char *strcpy(char *str1,char *str2);
作用:把str2指向的字符串(或者说 字符串str2)复制到str1中去
返回str1
需要头文件string.h
strlen(str1)是计算字符串的长度,不包括字符串末尾的“\0”!!!
strcpy_s和strcpy()函数的功能几乎是一样的。strcpy函数,就象gets函数一样,它没有方法来保证有效的缓冲区尺寸,所以它只能假定缓冲足够大来容纳要拷贝的字符串。在程序运行时,这将导致不可预料的行为。用strcpy_s就可以避免这些不可预料的行为。
这个函数用两个参数、三个参数都可以,只要可以保证缓冲区大小。
三个参数时:
errno_t strcpy_s(
char *strDestination,
size_t numberOfElements,
const char *strSource
);
两个参数时:
errno_t strcpy_s(
char (&strDestination)[size],
const char *strSource
); // C++ only
3.unsigned short (十六进制)转十六进制字符串
void CDCMDemolDlgDlg::change(unsigned short in, char out[5])
{
int a[10] = {0};
int i = 0;
int flag = 0; //记录字符串长度
while(in)
{
a[i++] = in%16;
in/=16;
}
flag = i;
stringstream ss; //存储转换后字符串
for(int j = i - 1; j >= 0; j--) //十进制转十六进制
{
//out[4 - j - 1] = char(a[j] + (a[j] < 10 ? '0' : 'A' - 10));
char s = char(a[j] + (a[j] < 10 ? '0' : 'A' - 10));
//ss<<a[j];
ss<<s;
}
ss>>out;
int len = strlen(out);
char temp[5] = "";
switch (len)
{
case 0:
//out = "0000";
strcpy_s(out,5,"0000");
break;
case 1:
memset(temp,5,0);
strcpy(temp,"000");
strcat(temp,out);
memset(out,5,0);
strcpy_s(out,5,temp);
break;
case 2:
memset(temp,5,0);
strcpy(temp,"00");
strcat(temp,out);
memset(out,5,0);
strcpy_s(out,5,temp);
break;
case 3:
memset(temp,5,0);
strcpy(temp,"0");
strcat(temp,out);
memset(out,5,0);
strcpy_s(out,5,temp);
break;
case 4:
break;
}
}
定义变量
unsigned short tag = 0x0089;
char conver[5] = {0};
函数调用
change(tag,conver);
输出conver = “0089”
EVR, Endorcardial Viability Ratio 缩略语,心内膜下活力率,医学名词。 相关名词,ERP,Endocardial Return Percentage缩略语,复苏比,医学名词。
知识补充:
CT与MRI是两种截然不同的检查方法。MRI是Magnetic Resnane Iamge的简称,中文为磁共振成像。 MRI是把人体放置在一个强大的磁场中,通过射频脉冲激发人体内氢质子,发生核磁共振,然后接受质子发出的核磁共振信号,经过梯度场三个方向的定位,再经过计算机的运算,构成各方位的图像。 CT由于X线球管和探测器是环绕人体某一部位旋转,所以只能做人体横断面的扫描成像,而MRI可做横断、矢状、冠状和任意切面的成像。 MRI由不同的扫描序列可形成各种图像,如T1加权像、T2加权像、质子密度像等,还有水成像、水抑制成像、脂肪抑制、弥散成像、波谱成像、功能成像等,CT只能辨别有密度差的组织,对软组织分辨力不高而MRI对软组织有较好的分辨力,如肌肉、脂肪、软骨、筋膜等信号不同。所以CT与MRI是截然不同的检查方法。 MRI提供的信息量不但大于医学影像学中的其他许多成像术,而且不同于已有的成像术,因此,它对疾病的诊断具有很大的潜在优越性。它可以直接作出横断面、矢状面、冠状面和各种斜面的体层图像,不会产生CT检测中的伪影;不需注射造影剂;无电离辐射,对机体没有不良影响。MRI对检测脑内血肿、脑外血肿、脑肿瘤、颅内动脉瘤、动静脉血管畸形、脑缺血、椎管内肿瘤、脊髓空洞症和脊髓积水等颅脑常见疾病非常有效,同时对腰椎椎间盘后突、原发性肝癌等疾病的诊断也很有效。 MRI也存在不足之处。它的空间分辨率不及CT,带有心脏起搏器的患者或有某些金属异物的部位不能作MRI的检查,另外价格比较昂贵。
4.stringstream的用法:
http://www.cppblog.com/Sandywin/archive/2007/07/13/27984.html
5.string cstring 的用法区别:
http://www.cnblogs.com/xFreedom/archive/2011/05/16/2048037.html
6.DcmItem Class Reference
http://support.dcmtk.org/docs/classDcmItem.html#0151cf24ee7e0615fc5c72a8a152ab34
lib静态链接库与.h头文件关系总结
(1)先看怎么生成lib文件:
假设我有一个.h的头文件中含有ABC函数的声明。一个.cpp文件含有ABC函数的定义。把你要做成LIB库文件的.cpp扩展文件另存,新建一个Win32StaticLibrary工程然后把这个.cpp文件加入到工程中,点编译编译成.lib库,编译成功后可以在DEBUG文件夹中找到对应的lib文件,以上方法使用VC6.0。
(2)lib库代替了.cpp文件,想要在别的函数中调用ABC函数,也就必须在工程属性中添加lib依赖项和lib文件所在目录。
(3)静态链接库的使用
将下列语句添加到头文件中:
#pragma comment(lib,"ABC.lib"),之前要确认ABC.lib是否在当前的目录下,或者在VC指定的LIB库的路径中。你也可以手动添加自己的LIB库的路径,方法如下:
工具--〉选项--〉Directory --〉 在Include file中添加include 头文件的路径,在Library file中添加LIB库的路径。
然后再像上边那样写,就不用担心路径的问题了,当然,头文件还是要包含的。
const 的使用:
二级指针的使用:
BMP图像的结构及读取:
题5:
如果交换一个矩阵中的两行,行空间和零空间不变,列空间和左零空间改变。
题6:为什么向量v=(1 2 3)不能同时为一个矩阵的行向量和零空间的一个向量,即v为什么不能同时存在于行空间和零空间。
行空间和零空间的交集只有零向量。实际上,零空间与行空间正交。
若干同维数的列向量(或同维数的行向量)所组成的集合叫做向量组。例如一个m*n矩阵的全体列向量是一个含n个m维列向量的向量组,它的全体行向量是一个含m个n维行向量的向量组。(A是m*n的向量组)又如线性方程组Ax = 0的全体解,当R(A)《n时是一个含无限多个n维列向量的向量组。(即它的解向量有无限多个)
第三章
若Am*nBn*l = O,则R(A)+R(B)《=n
有实数元素的m × n 矩阵的行空间是Rn的由这个矩阵的行向量生成的子空间。它的维度等于矩阵的秩,最大为min(m,n)。
有实数元素的m × n 矩阵的列空间是Rm的由这个矩阵的列向量生成的子空间。它的维度等于矩阵的秩,最大为min(m,n)。
如果把矩阵当作从Rn到Rm的线性变换,则矩阵的列空间等于这个线性变换的像。
矩阵A的列向量是所有A的纵列的线性组合。如果A = [a1, ...., an],则Col A = Span {a1, ...., an}。
行空间的概念推广到了在任何域上的矩阵,特别是复数域C。
在直觉上,给定一个矩阵A,矩阵A在向量x上的动作返回A的行向量经由x加权的一个线性组合,另外一种理解是:(1)首先投影x到A的行空间,(2)进行可逆的变换,(3)把结果向量y放置到A的列空间中。所以结果的 y =A x必定居留在A的列空间中。