真爱无限的知识驿站

学习积累技术经验,提升自身能力

UC编程02-环境变量、errno错误查看函数

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
",*p);
(p)++;
}
*/
char value[100]={};
p=environ;
char *val=getenv("USER");
if(val) printf("USER=%s
",val);
char *myenv=getenv("MYENV");//获取环境变量
if(!myenv) putenv("MYENV=env1");//设置环境变量
myenv=getenv("MYENV");
if(myenv!=NULL) printf("myenv=%s
",myenv);
return 0;
}

code2

UC编程01-预处理

uc:unix c 的简称


code1:

#include<stdio.h>
int main()
{
#line 1550//指定下面一行行号为1550
int b=0;
printf("%d",a);
return 0;
}


code2:

linux中stl模版的用法1

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;
}


c++ 连接MySql数据库并执行插入,查询数据测试代码

code:

#include "stdafx.h"
#include <windows.h>
#include <windowsx.h>
#include <SQL.H>//连接库:odbc32.lib odbccp32.lib
#include <SQLEXT.H>
#include <SQLTYPES.H>
#include "resource.h"
#include "MainDlg.h"
#define LOGIN_TIMEOUT 30
#define MAXBUFLEN 255
#define CHECKDBSTMTERROR(hwnd,result,hstmt) if(SQL_ERROR==result){ShowDBStmtError(hwnd,hstmt);return;}
/*
*/
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 Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
    switch(id)
    {
        case IDC_OK:
{
Test(hwnd);
}
        break;
        default:
break;
    }
}
void Main_OnClose(HWND hwnd)
{
    EndDialog(hwnd, 0);
}
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)
",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);
}
void Test(HWND hwnd)
{
    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];
//分配环境句柄
    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;
    }
//初始化语句句柄
    result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
    //result = SQLPrepare(hstmt,(SQLCHAR*)"select id,name,age from student",SQL_NTS);//如果是查询
     result = SQLPrepare(hstmt,(SQLCHAR*)"insert into student(id,name,age) values(3,'wanger',30)",SQL_NTS);
CHECKDBSTMTERROR(hwnd,result,hstmt);
     result =SQLExecute(hstmt);
    CHECKDBSTMTERROR(hwnd,result,hstmt);
//显示查询数据开始
/*  SQLINTEGER cbsatid=SQL_NTS;
    TCHAR info[50]={0};
    while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
    {
        SQLCHAR name[20]; 
        SQLINTEGER id;
        SQLSMALLINT age;
        
        SQLGetData(hstmt,1,SQL_C_LONG,&id,sizeof(SQLINTEGER),&cbsatid);
        SQLGetData(hstmt,2,SQL_C_CHAR,name,20,&cbsatid);
        SQLGetData(hstmt,3,SQL_C_TINYINT,&age,sizeof(SQLSMALLINT),&cbsatid);
        wsprintf(info,"%i,%s,%i",id,name,age);
        MessageBox(NULL,info,"提示",MB_OK);
    }
*/
//显示查询数据结束
    SQLFreeStmt(hstmt,SQL_CLOSE);
    SQLDisconnect(hdbc);
    SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
    SQLFreeHandle(SQL_HANDLE_ENV,henv);
MessageBox(hwnd,TEXT("执行成功"),TEXT("标题"),MB_OK);
}


c++ windowsSocket通讯连接效时服务器并获取返回消息简单用例

code:

#include "stdafx.h"
#include <windows.h>
#include <windowsx.h>
#include <WINSOCK2.H>
#include "resource.h"
#include "MainDlg.h"
#define HIGHTIME 21968699
#define LOWTIME  4259332096 
/*
*/
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 Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
    switch(id)
    {
        case IDC_OK:
{
SocketTest();
}
        break;
        default:
break;
    }
}
void Main_OnClose(HWND hwnd)
{
    EndDialog(hwnd, 0);
}
void SocketTest()
{
////在连接中加上 WSOCK32.LIB
WSADATA wsaData;
//初始化Socket库
WSAStartup(MAKEWORD(2,0),&wsaData);
//创建
SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
SOCKADDR_IN sa;
sa.sin_family=AF_INET;
//设置连接服务器端的端口
sa.sin_port = htons(IPPORT_TIMESERVER);//端口号
//218.107.63.213是ping smtp.163.com出来的
sa.sin_addr.S_un.S_addr = inet_addr("218.107.63.213");//www.time.ac.cn-210.72.145.8
if(connect(sock,(SOCKADDR *)&sa,sizeof(sa))==SOCKET_ERROR)
{
ShowError();
return;
}
/*
//接收连接到的消息1
TCHAR buff[256];
ZeroMemory(buff,sizeof(buff)/sizeof(TCHAR));
recv(sock,buff,sizeof(buff)/sizeof(TCHAR),0);
MessageBox(NULL,buff,"返回消息",MB_OK);
//发消息1
TCHAR msg[]="QUIT
";
send(sock,msg,sizeof(msg)/sizeof(TCHAR),0);
ZeroMemory(buff,sizeof(buff)/sizeof(TCHAR));
recv(sock,buff,sizeof(buff)/sizeof(TCHAR),0);
MessageBox(NULL,buff,"返回消息",MB_OK);
*/
//接收连接到的消息2
unsigned long ulTime=0;
recv(sock,(char*)&ulTime,sizeof(unsigned long),0);
ulTime=ntohl(ulTime);//把网络字节序转化为本机字节序
TCHAR buff1[256]={0};
wsprintf(buff1,"%i",ulTime);
MessageBox(NULL,buff1,"返回消息",MB_OK);//获取到的时间不对,www.time.ac.cn有问题,直接放到 http://tool.chinaz.com/Tools/unixtime.aspx 转换都不对。
////把unix时间转化为系统时间
SYSTEMTIME st;
UINT64 uiCurtime,uiBasetime,uiResult;
uiBasetime=((UINT64)HIGHTIME<<32)+LOWTIME;
uiCurtime=(UINT64)ulTime*(UINT64)10000000;
uiResult=uiBasetime+uiCurtime;
uiResult=uiBasetime;
FileTimeToSystemTime((LPFILETIME)&uiResult,&st);
TCHAR buff[256]={0};
wsprintf(buff,"%d年%d月%d日 %d:%d:%d",st.wYear,st.wMonth,st.wDay,st.wHour+8,st.wMinute,st.wSecond);
MessageBox(NULL,buff,"返回消息",MB_OK);
//设置系统时间
//SetSystemTime(&st);
closesocket(sock);
WSACleanup();
}
void ShowError()
{
TCHAR* lpMsgBuf;
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER| //自动分配消息缓冲区
  FORMAT_MESSAGE_FROM_SYSTEM, //从系统获取信息
  NULL,GetLastError(), //获取错误信息标识
  MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),//使用系统缺省语言
  (LPTSTR)&lpMsgBuf, //消息缓冲区
  0,
  NULL);
MessageBox(NULL,lpMsgBuf,"",MB_ICONERROR); 
}


c++中fstream类对文本文件的操作

code:

#include <iostream>
#include <string> 
#include<fstream>
using namespace std;
//追加方式写文件
void writefile()
{
fstream f("try.txt",ios::out|ios::app);
if(!f){
    cout<<"File open error!
";
    return;
}
f<<123<<" "<<456<<" "<<"my name is aa
";
f.close();
}
//读取文件
void readfile()
{
fstream f("try.txt",ios::in);
if(!f){
    cout<<"File open error!
";
    return;
}
int a,b;
char s[20];
while(1)
{
a=0;b=0;
s[0]=0;
 f>>a>>b;
 f.getline(s,20);
 if(a==0) break;//循环读取数据,没有数据时退出
 cout<<a<<" "<<b<<" "<<s<<endl;
}
f.close();
}
///复制文件二进制数据
void copybinary()
{
ifstream fin("try1.txt",ios::in|ios::binary);
  if(!fin){
    cout<<"File open error!
";
    return;
  }
  ofstream fout("try2.txt",ios::out|ios::binary);
  char c[1024];
  int count=0;
  while(!fin.eof())
  {
    fin.read(c,1024);
count=fin.gcount();
for(int i=0;i<count;i++)
{
c[i]=255-c[i];//字节取反,可以实现程序加密,让别人打不开,自己知道哪个字节少了多少,再还原
}
    fout.write(c,count);
  }
  fin.close();
  fout.close();
  cout<<"Copy over!
";
}
int main()
{
/*writefile();
readfile();*/
copybinary();
return 0;
}


[转载]使用vs2010编写c++Win32 Console Project时会出“error LNK1123” 错误解决方法

终极解决方案:

VS2010在经历一些更新后,建立Win32 Console Project时会出“error LNK1123” 错误,


解决方案为 将 项目|项目属性|配置属性|清单工具|输入和输出|嵌入清单 “是”改为“否”即可,但是每新建一个项目都要这样设置一次,很麻烦



在建立VS2010 Win32 Project项目时,按照上面解决方案依然发生了“error LNK1123”错误,经过上网查资料,解决方案为:

[转载]linux学习curses(3) 学习输入

code:

//字符输入
#include <curses.h>
main()
{
    int ch;
    int x=5,y=5;
    initscr();
    keypad(stdscr,TRUE);
    curs_set(0);
    noecho();
    mvaddch(y,x,'A');
    while(1)
    {
        ch=getch();
        //mvaddch(y,x,' ');
        //clrtoeol();
        erase();
        //clear();
        switch(ch)
        {
        case KEY_UP:
            y--;
            break;
        case KEY_DOWN:
            y++;
            break;
        case KEY_LEFT:
            x--;
            break;
        case KEY_RIGHT:
            x++;
            break;
        }
        mvaddch(y,x,'A');
        refresh();
    }        
    endwin();
}
//字符串输入
#include <curses.h> 
main()
{
    char name[9]={0};
    int r;
    initscr();
    //绘制UI
    mvaddstr(4,10,"用户:[        ]");
    //输入
    r=mvgetnstr(4,16,name,8);
    //name[r]=0;
    //打印输入
    mvprintw(7,10,"你输入的是:%s",name);
    refresh();
    //输入字符    
    getch();
    endwin();
}
 //格式输入
#include <curses.h>
void init();
void drawUi();
void dealInput();
void destroy();
main()
{
init();
drawUi();
dealInput(); 
destroy();
}
void dealInput()
{
int a,b;
while(1)
{
mvaddstr(2,3,"     ");
mvscanw(2,3,"%d",&a);
mvaddstr(2,11,"     ");
mvscanw(2,11,"%d",&b);
mvaddstr(2,19,"      ");
mvprintw(2,19,"%d",a+b);
refresh();
}
}
void drawUi()
{
mvaddstr(2,2,"[     ]+[     ]=[      ]");
refresh();
}
void destroy()
{
endwin();
}
void init()
{
initscr();
}


[转载]linux学习curses(2) 时间显示器

code:

#include <curses.h>
#include <time.h>
#include <unistd.h>
void init();
void drawui();
void business();
void destroy();
main()
{
init();
drawui();
business();
destroy();
}
void business()
{
time_t tt;
struct tm *t;
while(1)
{
//取时间
tt=time(0);
t=localtime(&tt);
//显示时间
mvprintw(LINES/2,(COLS-8)/2,
"%02d:%02d:%02d",
t->tm_hour,t->tm_min,t->tm_sec);
//刷新屏幕
refresh();
sleep(1);
}
}
void drawui()
{
box(stdscr,0,0);
}
void destroy()
{
endwin();
}
void init()
{
initscr();
}


[转载]linux学习curses(1)

code:

#include<curses.h>
/*
在initscr();后调用。
终端是否支持颜色:bool has_colors();
初始化颜色:int start_colors();
定义颜色对:int init_pair(short pair,short fore,short back);
使用颜色对:COLOR_PAIR(short pair);
*/
int main()
{
    WINDOW *w=initscr();
    if(has_colors()==TRUE)
    {
        start_color();
        init_pair(1,COLOR_RED,COLOR_WHITE);
        init_pair(2,COLOR_RED,COLOR_GREEN);
        bkgd(COLOR_PAIR(2));//整体颜色
    }
    border(0,0,0,0,0,0,0,0);
    box(stdscr,0,0);//画边框,0都代表系统默认格式
    mvhline(2,10,'=',20);//第几行第几列输出多少个字符
    //mvhline(2,10,'|',20);
    mvaddch(3,10,'A'|A_BOLD|A_UNDERLINE|COLOR_PAIR(1));//指定位置输出字符//man attron
    attron(COLOR_PAIR(1));//开启属性
    mvaddstr(5,10,"hello");//输出字符串
    attroff(COLOR_PAIR(1));//关闭属性
    mvprintw(9,10,"行:%d,列:%d",LINES,COLS);//格式字符输出到窗口
    refresh();//刷屏,显示效果
    //wrefresh(WINDOW *w);
    getch();
    endwin();
    return 0;
}


<< < 1 2 3 4 5 6 7 > >>

Powered By Z-BlogPHP 1.7.3

Copyright 2024-2027 pukuimin Rights Reserved.
粤ICP备17100155号