//myuc.h
#include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<fcntl.h> #include<string.h> #include<sys/types.h> #include<sys/mman.h> #include<sys/stat.h>
//myuc.h
#include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<fcntl.h> #include<string.h> #include<sys/types.h> #include<sys/mman.h> #include<sys/stat.h>
函数说明:
code1
#include<stdio.h> #include<unistd.h> int main() { void* empty=sbrk(0); void * p1=sbrk(4);//虚拟内存映最少射一个内存页4096字节 int *pi=p1; *(pi+2)=120;//给p3赋值 void* p2=sbrk(4); void* p3=sbrk(4); printf("p1=%p,p2=%p,p3=%p\n",p1,p2,p3); sbrk(-8); sbrk(4093); printf("4097字节\n"); sleep(15); sbrk(-1); printf("4096字节\n"); sleep(15); sbrk(-4096); printf("0字节\n"); sbrk(123); double * pd=sbrk(0);//取最后空间的首地址 brk(pd+1);//分配一个double空间 int result=brk(empty);//回收所有 //printf("p1=%p,p2=%p,p3=%p\n",p1,p2,p3); //printf("p3=%d\n",*(int*)p3); return 0; }
code2
code1
#include<stdio.h> #include<string.h> #include<stdlib.h> //extern char**envron; //第三个参数为环境表首地址 int main(int argc,char ** argv,char **env){ extern char** environ;//外部全局变量,不改动 char **p=environ; //输出所有环境变量 /* while(*p!=NULL){ printf("%s\n",*p); (p)++; } */ char value[100]={}; p=environ; char *val=getenv("USER"); if(val) printf("USER=%s\n",val); char *myenv=getenv("MYENV");//获取环境变量 if(!myenv) putenv("MYENV=env1");//设置环境变量 myenv=getenv("MYENV"); if(myenv!=NULL) printf("myenv=%s\n",myenv); return 0; }
code2
uc:unix c 的简称
code1:
#include<stdio.h> int main() { #line 1550//指定下面一行行号为1550 int b=0; printf("%d",a); return 0; }
code2:
code1:
/* 模版成员模版 */ #include<iostream> using namespace std; template<typename V> class Value { public: Value(const V& v):m_v(v){} V m_v; }; template<typename K> class Key { public: Key(const K& k):m_k(k){} K m_k; template<typename V> class Value { public: Value(const V& v):m_v(v){} V m_v; }; }; int main() { Key<string> key("pi"); Key<string>::Value<double> value(3.1415); cout<<key.m_k<<" "<<value.m_v<<endl; return 0; }
//示例代码:
<div style="width: 190px;"> <script type="text/javascript" charset="utf-8" src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=2&lang=zh"></script> <script type="text/javascript" charset="utf-8" src=" 分享到:<br /> <div style="position: absolute;"> <p style="width: 280px; height: 50px; padding-top: 5px;"> <strong style="color: #939393;"></strong><span class="BSHARE_COUNT bshare-share-count"> 0</span> <a title="分享到新浪微博"></a><a title="分享到搜狐微博"
//包括多线程的使用,数据库的操作和打开文件对话框的使用。
#include "stdafx.h" #include <windows.h> #include <windowsx.h> #include "resource.h" #include "MainDlg.h" #include <SQL.H>//连接库:odbc32.lib odbccp32.lib #include <SQLEXT.H>//数据库头文件 #include <SQLTYPES.H>//数据库头文件 #include <COMMDLG.H>//OPENFILENAME 头文件 #include<STRING.H> #define LOGIN_TIMEOUT 30 #define MAXBUFLEN 255 ///#define CHECKDBSTMTERROR(hwnd,result,hstmt) char szFile[MAX_PATH]; BOOL ImportStatus = FALSE; //导入状态标志 SQLHENV henv = NULL; SQLHDBC hdbc = NULL; SQLHSTMT hstmt = NULL; SQLRETURN result; SQLCHAR ConnStrIn[MAXBUFLEN] = "DRIVER={MySQL ODBC 5.1 Driver};SERVER=127.0.0.1;UID=root;PWD=123456;DATABASE=Test;CharSet=gbk;"; SQLCHAR ConnStrOut[MAXBUFLEN]; void ShowDBError(HWND hwnd,SQLSMALLINT type,SQLHANDLE sqlHandle) { char pStatus[10], pMsg[101]; SQLSMALLINT SQLmsglen; char error[200] = {0}; SQLINTEGER SQLerr; long erg2 = SQLGetDiagRec(type, sqlHandle,1, (SQLCHAR *)pStatus,&SQLerr,(SQLCHAR *)pMsg,100,&SQLmsglen); wsprintf(error,"%s (%d)\n",pMsg,(int)SQLerr); MessageBox(hwnd,error,TEXT("数据库执行错误"),MB_ICONERROR|MB_OK); } void ShowDBConnError(HWND hwnd,SQLHDBC hdbc) { ShowDBError(hwnd,SQL_HANDLE_DBC,hdbc); } void ShowDBStmtError(HWND hwnd,SQLHSTMT hstmt) { ShowDBError(hwnd,SQL_HANDLE_STMT,hstmt); } //查检是否有错误 BOOL CHECKDBSTMTERROR(HWND hwnd,SQLRETURN result,SQLHSTMT hstmt) { if(SQL_ERROR==result) { ShowDBStmtError(hwnd,hstmt); return TRUE; } else { return FALSE; } } BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch(uMsg) { HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog); HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand); HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose); } return FALSE; } BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam) { return TRUE; } //选择文件 void openfile(HWND hwnd) { OPENFILENAME ofn;//定义一个OPENFILENAME类型的结构体。 ZeroMemory(&ofn,sizeof(ofn));//使用结构体变量前把该结构体变量各个位清零。 ofn.lStructSize = sizeof(ofn); ofn.lpstrFile = szFile; ofn.lpstrFile[0] = TEXT('\0'); ofn.nMaxFile = sizeof(szFile); ofn.lpstrFilter = TEXT("ALL\0*.*\0文本文档\0*.TXT\0"); ofn.nFilterIndex = 2; ofn.lpstrFileTitle = NULL; ofn.nMaxFileTitle = 0; ofn.lpstrInitialDir = NULL; ofn.Flags = OFN_EXPLORER |OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST; if (GetOpenFileName(&ofn)) { SetDlgItemText(hwnd,IDC_FILEINFO,szFile); } } BOOL inport_begin(HWND hwnd) { //分配环境句柄 result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv); //设置管理环境属性 result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0); //分配连接句柄 result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc); //设置连接属性 result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (void*)LOGIN_TIMEOUT, 0); //连接数据库 result = SQLDriverConnect(hdbc,NULL,ConnStrIn,SQL_NTS,ConnStrOut,MAXBUFLEN,(SQLSMALLINT *)0,SQL_DRIVER_NOPROMPT); if(SQL_ERROR==result) { ShowDBConnError(hwnd,hdbc); return FALSE; } ImportStatus = TRUE; return TRUE; } DWORD WINAPI ThreadFunc(LPVOID lpParam) //多线程任务 { HWND hwnd = (HWND)lpParam; char str[50]; char fname[11]; char fage[11]; int age; int i,j,k; int IntoNum = 0; //TCHAR temp[256]; TCHAR info[256]; FILE * Input; for (i=0;szFile[i]!='\0';++i) //处理绝对路径 { if (szFile[i]=='\\') { szFile[i]='/'; } } if(strlen(szFile)==0){SetDlgItemText(hwnd,IDC_STATUS,"请选择文件!"); return 0;} Input = fopen(szFile,"r"); //打开文本文档 BOOL hasError=FALSE; /*创建新的数据库句柄,执行SQL语句*/ result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt); result = SQLPrepare(hstmt,(SQLCHAR *)"insert into T_Person(FName,FAge) values(?,?)",SQL_NTS);//两个占位符 SQLINTEGER iSQL_NTS=SQL_NTS; while(!feof(Input)&&ImportStatus) //判断文件流是否到末尾,并判断导入标志的状态 { ZeroMemory(fname,sizeof(fname)/sizeof(char)); ZeroMemory(fage,sizeof(fage)/sizeof(char)); ZeroMemory(str,sizeof(str)/sizeof(char)); //ZeroMemory(temp,sizeof(temp)/sizeof(TCHAR)); ZeroMemory(info,sizeof(info)/sizeof(TCHAR)); fgets(str,50,Input); for (i=0,j=0,k=0;str[k]!='\0';++k) //将文件流中的姓名和年龄数据进行处理,存储到相应的变量中 { if (str[k]>='A'&&str[k]<='Z' || str[k]>='a'&&str[k]<='z') { fname[i] = str[k]; ++i; } else { if (str[k]>='0'&&str[k]<='9') { fage[j] = str[k]; ++j; } } } fname[i] = '\0'; fage[j] = '\0'; age = atoi(fage); if(CHECKDBSTMTERROR(hwnd,result,hstmt)==TRUE) {hasError=TRUE;break;} //给两个占位符赋值 SQLBindParameter(hstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,strlen(fname),0,fname,0,&iSQL_NTS); SQLBindParameter(hstmt,2,SQL_PARAM_INPUT,SQL_C_LONG,SQL_INTEGER,sizeof(int),0,&age,0,&iSQL_NTS); result =SQLExecute(hstmt); if(CHECKDBSTMTERROR(hwnd,result,hstmt)==TRUE) {hasError=TRUE;break;} Sleep(30); wsprintf(info,TEXT("正在导入第%d条数据"),++IntoNum); SetDlgItemText(hwnd,IDC_STATUS,info); } fclose(Input); SQLFreeStmt(hstmt,SQL_CLOSE); SQLDisconnect(hdbc); //如果到达末尾,跳出,并关闭数据库 SQLFreeHandle(SQL_HANDLE_DBC,hdbc); SQLFreeHandle(SQL_HANDLE_ENV,henv); if(hasError==TRUE) { SetDlgItemText(hwnd,IDC_STATUS,TEXT("数据库操作出错,取消导入!")); } else if (ImportStatus) { SetDlgItemText(hwnd,IDC_STATUS,TEXT("恭喜您,所有的数据都已经导入成功!")); } else { SetDlgItemText(hwnd,IDC_STATUS,TEXT("您已经取消了数据库的导入!")); } return 0; } void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) { switch(id) { case IDC_OK: { if(inport_begin(hwnd)) { CreateThread(NULL,0,ThreadFunc,hwnd,0,0); //开始使用多线程调用函数 } else { SetDlgItemText(hwnd,IDC_STATUS,TEXT("数据库连接出错,取消导入!")); } break; } case IDC_CANCEL: { ImportStatus = FALSE; break; } case IDC_FILEOPEN: openfile(hwnd); break; default: break; } } void Main_OnClose(HWND hwnd) { EndDialog(hwnd, 0); }
code:
#include "stdafx.h" #include <windows.h> #include <windowsx.h> #include "resource.h" #include "MainDlg.h" BOOL isCancel=FALSE; HWND hwnd1; BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch(uMsg) { HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog); HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand); HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose); } return FALSE; } BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam) { hwnd1=hwnd; return TRUE; } DWORD WINAPI ThreadFun(LPVOID Lpparam)//要运行的耗时操作,如果要用 Lpparam 需要显式转换 { SetDlgItemText(hwnd1,IDC_EDIT1,"正在连接服务器…"); Sleep(4000); if(isCancel==TRUE) { SetDlgItemText(hwnd1,IDC_EDIT1,"登陆已取消!"); return -1; } SetDlgItemText(hwnd1,IDC_EDIT1,"正在验证密码…"); Sleep(4000); if(isCancel==TRUE) { SetDlgItemText(hwnd1,IDC_EDIT1,"登陆已取消!"); return -1; } SetDlgItemText(hwnd1,IDC_EDIT1,"验证通过!"); return 0; } void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) { switch(id) { case IDC_OK: { isCancel=FALSE; CreateThread(NULL,0,ThreadFun,0,0,0);//新的线程运行函数,第4个参数可以给函数传参数值 } break; case IDC_btnCancel: { isCancel=TRUE; } break;; default: break; } } void Main_OnClose(HWND hwnd) { EndDialog(hwnd, 0); }
code:
//c++文本输入框的操作: bool isnumber(char *str1,char *str2) //判断它是不是输入的数字 { int i,flag=1; for(i=0;i<strlen(str1);i++) { if ( (str1[i]<'0' || str1[i]>'9')&&str1[i]!='.'&&str1[i]!='.') //右边小键盘上的和中间键盘上的点它不认为是相同的 { flag=0;return FALSE; } } if (flag==1) { for(i=0;i<strlen(str2);i++) if ( (str2[i]<'0' || str2[i]>'9') &&str2[i]!='.'&&str1[i]!='.') { flag=1;return FALSE; } } return TRUE; } void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) { switch(id) { case IDC_OK: { TCHAR str1[256],str2[256]; GetDlgItemText(hwnd,IDC_EDIT1,str1,sizeof(str1)); //得到输入的字符串 GetDlgItemText(hwnd,IDC_EDIT2,str2,sizeof(str2));//得到输入的字符串 if (isnumber(str1,str2)) { double i1=atof(str1); double i2=atof(str2); double i3; char str[256]; HWND hwndcombo1 = GetDlgItem(hwnd,IDC_COMBO1); //通过这个得到选择框的句柄 int cursel=ComboBox_GetCurSel(hwndcombo1); // 通过句柄得到选择了当前编号值 // 0 1 2 3分别为 + - * / 的编号值 // ComboBox_GetLBText(hwndcombo1,cursel,str); // 通过编号值得到字符串值,放到str 里面,这里只有几个选项,直接用编号值判断就行 switch(cursel) { case 0: i3=i1+i2; break; case 1: i3=i1-i2; break; case 2: i3=i1*i2; break; case 3: i3=i1/i2; break; } TCHAR str3[256]; sprintf(str3,"%lf",i3); SetDlgItemText(hwnd,IDC_EDIT3,str3); } else SetDlgItemText(hwnd,IDC_EDIT3,"请输入数字"); } break; default: break; } } //c++下拉框的操作。 case IDC_BUTTONADD: //添加 { TCHAR STR[256]; GetDlgItemText(hwnd,IDC_EDITADD,STR,sizeof(STR)); // 得到添加框内的字符串 if (STR!=NULL) { HWND COM1=GetDlgItem(hwnd,IDC_COMBO1); // 组合框句柄 ComboBox_AddString(COM1,STR); // 向里面加入字符串 SetDlgItemText(hwnd,IDC_EDITADD,NULL); // 将添加框清空 MessageBox(hwnd,"添加成功!","提示",MB_OK); } } break; case IDC_BUTTONDEL: // 删除 { HWND COM1=GetDlgItem(hwnd,IDC_COMBO1); int cur=ComboBox_GetCurSel(COM1); // 得到当前选择的项 if (CB_ERR==cur) // 如果没有选择东西 { MessageBox(hwnd,"没有数据被选择","错误",MB_OK|MB_ICONERROR); } ComboBox_DeleteString(COM1,cur); } break; case IDC_BUTTONSEARCH: // 查找 { TCHAR STRS[256]; GetDlgItemText(hwnd,IDC_EDITSEARCH,STRS,sizeof(STRS)); // 得到查找的字符串 HWND EDITS= GetDlgItem(hwnd,IDC_COMBO1); bool bfind=FALSE; int i=0,icount=ComboBox_GetCount(EDITS),ifind; // 得到组合框中的数据有多少条 for(;i<icount;i++) // 逐条搜索 { TCHAR strte[256]; ComboBox_GetLBText(EDITS,i,strte); // 得到每条数据的字符串 if (strcmp(strte,STRS)==0) // 比较 { bfind=true; ifind=i;break; } } if (bfind) // 找到才提示,并将组合框中选中项设为找到的值 { ComboBox_SetCurSel(EDITS,ifind); MessageBox(hwnd,TEXT("找到了"),TEXT("结果"),MB_OK); } } break; //C++ 中列表框控件的使用(): void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) { switch(id) { case IDC_OK: { MessageBox(hwnd,TEXT("adsdad"),TEXT("问好"),MB_OK); } break; case IDC_btnAdd: { SendDlgItemMessage(hwnd,IDC_LIST1,LB_ADDSTRING,0,(LPARAM)"aaa"); SendDlgItemMessage(hwnd,IDC_LIST1,LB_ADDSTRING,0,(LPARAM)"bbb"); SendDlgItemMessage(hwnd,IDC_LIST1,LB_ADDSTRING,0,(LPARAM)"ccc"); SendDlgItemMessage(hwnd,IDC_LIST1,LB_ADDSTRING,0,(LPARAM)"ddd"); } break; case IDC_LIST1://IDC_LIST1的事件 { if(LBN_DBLCLK==codeNotify)//双击事件 { int index=SendDlgItemMessage(hwnd,IDC_LIST1,LB_GETCURSEL,0,0); TCHAR buff[255]; SendDlgItemMessage(hwnd,IDC_LIST1,LB_GETTEXT,index,(LPARAM)buff); MessageBox(hwnd,buff,"提示",MB_OK); } else if(LBN_SELCHANGE==codeNotify)//选项改变事件 { int index=SendDlgItemMessage(hwnd,IDC_LIST1,LB_GETCURSEL,0,0); TCHAR buff[255]; SendDlgItemMessage(hwnd,IDC_LIST1,LB_GETTEXT,index,(LPARAM)buff); MessageBox(hwnd,buff,"提示",MB_OK); } } break; default: break; } } //C++MFC中列表框控件的使用(): CListBox *listbox2= (CListBox*)GetDlgItem(IDC_LIST2); //获得列表框的指针 listbox2->AddString("菠萝"); //为列表框添加列表项 listbox2->AddString("苹果"); listbox2->AddString("桃子"); listbox2->AddString("西瓜"); listbox2->AddString("香蕉"); CListBox *listbox3= (CListBox*)GetDlgItem(IDC_LIST3); //获得列表框的指针 listbox3->AddString("格尺"); //为列表框添加列表项 listbox3->AddString("橡皮"); listbox3->AddString("胶带"); listbox3->AddString("铅笔"); //【加在 BOOL CListTestDlg::OnInitDialog()里的】 void CListTestDlg::OnButton1() { CListBox *listbox1= (CListBox*) GetDlgItem(IDC_LIST1); //得到列表控件的指针 listbox1->AddString("北京"); //向列表中添加内容 listbox1->AddString("长春"); listbox1->AddString("上海"); listbox1->AddString("南京"); } void CListTestDlg::OnButton2() { CListBox *listbox2=(CListBox*)GetDlgItem(IDC_LIST2); //得到列表控件的指针 listbox2->SelectString(0,"桃子"); //查找列表中“桃子”一项 } void CListTestDlg::OnSelchangeList3() { CListBox *listbox3= (CListBox*)GetDlgItem(IDC_LIST3); //得到列表框的指针 int select; select=listbox3->GetCurSel(); //得到当前列表框中选项的索引 CString str; listbox3->GetText(select,str); //得到列表索引指向的文本内容 CButton *button3= (CButton*)GetDlgItem(IDC_BUTTON3); //得到按钮指针 button3->SetWindowText(str); //设置按钮文本 } void CListTestDlg::OnButton4() { CListBox *listbox4= (CListBox*) GetDlgItem(IDC_LIST4); //得到列表控件指针 listbox4->Dir(DDL_DIRECTORY,"c://*.*"); //向列表框中添加C盘驱动器文件名列表 } //C++MFC中按钮控件的使用: CButton *button1=(CButton*)GetDlgItem(IDC_BUTTON1); //得到按钮的指针 button1->ModifyStyle(0,BS_ICON); //设置按钮风格为图表显示 button1->SetIcon(AfxGetApp()->LoadIcon(IDI_ICON1)); //按钮以图标显示 CButton *button3=(CButton*)GetDlgItem(IDC_BUTTON5); button3->SetButtonStyle(BS_RADIOBUTTON); //设置按钮风格为单选按钮 //【上面的是放在 BOOL CButtonTestDlg::OnInitDialog() 中的】 void CButtonTestDlg::OnButton2() { SetCursor(AfxGetApp()->LoadCursor(IDC_CURSOR1)); //设置光标 } void CButtonTestDlg::OnButton3() { CButton *button5=(CButton*)GetDlgItem(IDC_BUTTON5); //得到按钮指针 button5->SetCheck(true); //选中单选按钮 } void CButtonTestDlg::OnButton4() { CButton *button5=(CButton*)GetDlgItem(IDC_BUTTON5); //得到按钮指针 button5->SetCheck(false); //取消单选按钮的选中 } //C++MFC中编辑框的使用: //四个编辑框,四个按钮,不同功能 void CEditTestDlg::OnButton1() { CEdit* edit1= (CEdit*)GetDlgItem(IDC_EDIT1); //得到编辑框的指针 edit1->SetWindowText("it科技"); //设置编辑框中的内容 } void CEditTestDlg::OnButton2() { CEdit* edit2= (CEdit*)GetDlgItem(IDC_EDIT2); //得到编辑框的指针 edit2->Undo(); //取消上一次的操作 } void CEditTestDlg::OnButton3() { CEdit* edit3= (CEdit*)GetDlgItem(IDC_EDIT3); //得到编辑框的指针 edit3->SetPasswordChar('*'); //设置密码输入字符 } void CEditTestDlg::OnButton4() { CEdit* edit4= (CEdit*)GetDlgItem(IDC_EDIT4); edit4->ModifyStyle(0,ES_NUMBER); //第一个参数代表要移除的窗口风格,第二个是要添加的窗口风格(只能输入数字) }