C语言,VCxp安装新中大6.0问题题

  C语言是一门博大精深的语言,C语言往往是程序员以及所有软件行业从业者的第一门编程语言。
编程环境:
  对于初学者来说,我一开始学习C语言,其实是用的turboc 2.0版本,这个很有历史感,但是实在是有点low,其他的编程环境有很多,Visual studio各种版本我也用过,现在我的开发环境主要做C++开发,因此我用的是codeblock + mingw的IDE工具。对于初学者来说,我推荐vc++6.0,这个版本我经常会用来测试一些小程序,既可以做C++,也可以用来学习C语言,很方便,编译,链接,运行,调试,当时学习C语言的时候,不知道在这上面调试过多少bug。
VC++6.0安装
  网上搜索安装包下载,原版完整版会包含vs的各种工具,所以很大,这推荐下图的这个安装包下载,中文版,界面友好,总共30多m。安装就是双击exe,下一步下一步,安装的路径稍微选一下即可,我一般装到D盘program file目录下。完成之后如果提示兼容性问题,直接勾上小方框不再提示,点确定。如果你成功安装了,可以看到右下图的界面。
&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
编写Hello,world程序
  VC6.0初始界面上,文件-&新建-&工程-&win32窗口程序—&右边填工程名称和存储的位置-&确定-&一个空工程。
  一路点下去,可以看到左边有建好的工程:fileView下已经有了一些文件夹。从上到下分别是源文件,头文件,资源文件,先不管是什么,现在只要只要我们把源代码文件放在source files中。
  好,关键步骤来了:文件-&新建一个C++ file,填好文件名HelloWorld.c,如下图。一定是要.c结尾,当然.cpp结尾也可以,但我们这里是学习C语言,先.c把,这样编译器就会默认按照C的语法来编译程序。
  写代码:
<span style="color: # # include&stdio.h&
<span style="color: #
<span style="color: # int main()
<span style="color: # {
<span style="color: #
printf("Hello world!");
<span style="color: #
<span style="color: #
return <span style="color: #;
<span style="color: # }
+ Hellowolrd.c
  接下来,编译,链接,执行,点击相应的按钮就可以。 显示结果右图那个黑乎乎的窗口,已经打印出来一句Hello,world:
  这是一个简单的程序,每个程序员的第一个程序,这里你就正式踏入C的大门。
阅读(...) 评论()vc6.0怎么写c语言程序_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
vc6.0怎么写c语言程序
阅读已结束,下载本文需要
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩5页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢查看:3997|回复:2
俺找了很多代码,用了&windows.h&头文件,代码也都拷贝了,还是画不出来图。谁有现成的代码,给我个能运行的好不?我脆弱的心灵经受不起打击了。我的一个代码贴出来哈。复制内容到剪贴板代码:#include&stdio.h&
#include&windows.h&
void CSinusoidView::OnDraw(CDC* pDC)
CSinusoidDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
//建立画笔
CPen cpen,
pen.CreatePen(PS_SOLID,4,RGB(0,0,0));
cpen.CreatePen(PS_SOLID,2,RGB(0,0,255));
pDC-&SelectObject(&cpen);
//指定原点
pDC-&SetViewportOrg(100,245);
pDC-&SetTextColor(RGB(255,0,0));
//绘制横坐标
CString sPIText[]={&-1/2π&,&&,&1/2π&,&π&,&3/2π&,&2π&,&5/2π&,&3π&,&7/2π&,&4π&,&9/2π&,&5π&};
for(int n=-1,nTmp=0;nTmp&=660;n++,nTmp+=60)
&&pDC-&LineTo(60*n,0);
&&pDC-&LineTo(60*n,-5);
&&pDC-&MoveTo(60*n,0);
&&pDC-&TextOut(60*n-sPIText[n+1].GetLength()*3,16,sPIText[n+1]);
pDC-&MoveTo(0,0);
CString sT
//绘制纵坐标
for(n=-4,nTmp=0;nTmp&=180;n++,nTmp=60*n)
&&pDC-&LineTo(0,60*n);
&&pDC-&LineTo(5,60*n);
&&pDC-&MoveTo(0,60*n);
&&sTmp.Format(&%d&,-n);
&&pDC-&TextOut(10,60*n,sTmp);
pDC-&SelectObject(&pen);
for(int x=-60;x&600;x++)
&&//弧度=X坐标/曲线宽度*角系数*π
&&//Y坐标=振幅*曲线宽度*sin(弧度)
&&radian =x/((double)60*2)*PI;
&&y=sin(radian)*2*60;
&&pDC-&MoveTo((int)x,(int)y);
&&pDC-&LineTo((int)x,(int)y);
cpen.DeleteObject();
pen.DeleteObject();
}这个是人家的代码,但是运行错误。说是双冒号的毛病。我一边看看书,一边等经验人士的指点哈~~先行谢过。
+2 版规,发帖即奖2无忧币 ...
这么看看不太出问题所在
你把错误信息贴出来看看
另外绘图的例子不是由很多么
网上随便搜搜就有了啊
所有和自绘有关的程序都是需要绘图操作的
有画出来了,你要包含头文件
#include &MATH.H&
#define&&PI&&3.14
多这个你就搞定了。你试试。我是看得到图像了
本版版规,回帖可获2无忧币10:37 提问
C++代码改成C语言代码,没学过C++好多看不懂啊(泪奔······)求大神指点,我用的VC6.0
代码如下,
#include "winsock2.h"
#include "Winsnmp.h"
#include 这里是string以下都要用 & 和 & 括起来(不知为何不显示=,=)
#include vector
#include algorithm
#include iostream
#pragma comment(lib,"wsnmp32.lib")
#pragma comment(lib,"ws2_32.lib")
typedef vector strvec_
class CManager
CManager(string strIP,string strCommunity);
//构造函数
~CManager();
//析构函数
string ValueToString(smiVALUE sValue);
//返回值转换
bool InitSnmp();
//用于加载SNMP
bool Send(const strvec& strOIDArray,smiINT sPDUType=SNMP_PDU_GETNEXT);
bool Receive(HSNMP_VBL& hVbl);
//接收应答包
bool GetAValue(const string& strOID,string& strResult);
//获取ObjectID值
bool GetTable(strvec strOIDArray,strvec_vec& strResultTable);
string GetLocalIP();
//获取本机IP地址
void ErrorMessage(string strMessage);
//输出错误信息
void SetEvent();
protected:
HSNMP_SESSION
//会话句柄
HSNMP_CONTEXT m_hC
//上下文句柄
static SNMPAPI_STATUS CALLBACK Callback
HSNMP_SESSION
//WinSNMP会话句柄
HWND hWnd,
//处理通知窗口的句柄
UINT wMsg,
//窗口消息通知码
WPARAM wParam,
//消息类型
LPARAM lParam,
//PDU的请求标识符
LPVOID lpClientData
//可选的自定义数据
smiUINT32 m_nMajorV
//WinSNMP API主版本
smiUINT32 m_nMinorV
//WinSNMP API副版本
smiUINT32 m_nL
//支持最高的操作标准
smiUINT32 m_nTranslateM
//默认实体/上下文模式
smiUINT32 m_nRetransmitM
//默认的重发机制
string m_IP;
smiOCTETS m_C
HANDLE m_hE
// 构造函数
CManager::CManager(string strIP,string strCommunity):
m_nMajorVersion(0),
m_nMinorVersion(0),
m_nLevel(0),
m_nTranslateMode(0),
m_nRetransmitMode(0),
m_IP(strIP)
{m_Community.len=strCommunity.length();
m_Community.ptr=new smiBYTE[strCommunity.length()];
memcpy(m_Community.ptr,strCommunity.c_str(),strCommunity.length());
m_hEvent=CreateEvent(NULL,true,false,NULL);
//析构函数
CManager::~CManager()
{SnmpFreeContext(m_hContext);
SnmpClose(m_hSession);
SnmpCleanup();
delete[] m_Community.
//SNMP初始化函数
bool CManager::InitSnmp()
//加载SNMP
if(SnmpStartup(&m_nMajorVersion,&m_nMinorVersion,&m_nLevel,&m_nTranslateMode,&m_nRetransmitMode)==SNMPAPI_FAILURE)
{ErrorMessage("startup SNMP error!");
//设置传输模式
if (SnmpSetTranslateMode(m_nTranslateMode)==SNMPAPI_FAILURE)
{ErrorMessage("Set transfer mode error!");
//设置重传模式
if (SnmpSetRetransmitMode(m_nRetransmitMode)==SNMPAPI_FAILURE)
{ErrorMessage("Set retransmission mode error!");
//建立会话
m_hSession=SnmpCreateSession(NULL,NULL,CManager::Callback,(LPVOID)this);
if(m_hSession==SNMPAPI_FAILURE)
{ErrorMessage("Set conversation error!");
//建立实体
HSNMP_ENTITY
if((hEntity=SnmpStrToEntity(m_hSession,m_IP.c_str()))==SNMPAPI_FAILURE)
{ErrorMessage("Creat entity error!!");
//建立上下文句柄
if((m_hContext=SnmpStrToContext(m_hSession,&m_Community))==SNMPAPI_FAILURE)
{ErrorMessage("Create context handle error!!");
//设置超时时间
if (SnmpSetTimeout(hEntity,10)==SNMPAPI_FAILURE)
{ErrorMessage("Set timeout error!");
//设置重传次数
if (SnmpSetRetry(hEntity,1)==SNMPAPI_FAILURE)
{ErrorMessage("Set retransmissions error!");
//SNMP消息发送函数
bool CManager::Send(const strvec& strOIDArray,smiINT sPDUType)
{HSNMP_VBL hV
HSNMP_PDU hP
HSNMP_ENTITY hSrcEntity,hDestE
//创建源主机和目的主机实体句柄
hSrcEntity = SnmpStrToEntity(m_hSession,GetLocalIP().c_str());
hDestEntity = SnmpStrToEntity(m_hSession,m_IP.c_str());
//创建变量绑定列表
if((hVbl = SnmpCreateVbl(m_hSession,NULL,NULL)) == SNMPAPI_FAILURE)
//点分十进制串转换成二进制格式
for(strvec::const_iterator it=strOIDArray.begin();it!=strOIDArray.end();it++)
{SnmpStrToOid((*it).c_str(),&sOid);
SnmpSetVb(hVbl,0,&sOid,NULL);
//将数据转换成特定PDU格式
if((hPdu = SnmpCreatePdu(m_hSession,sPDUType,0,NULL,NULL,hVbl)) == SNMPAPI_FAILURE)
if(SnmpSendMsg(m_hSession,hSrcEntity,hDestEntity,m_hContext,hPdu) == SNMPAPI_FAILURE)
//释放句柄
SnmpFreeEntity(hSrcEntity);
SnmpFreeEntity(hDestEntity);
SnmpFreePdu(hPdu);
SnmpFreePdu(hVbl);
//SNMP消息接收函数
bool CManager::Receive(HSNMP_VBL& hVbl)
{WaitForSingleObject(m_hEvent,INFINITE);
ResetEvent(m_hEvent);
HSNMP_ENTITY hSrcE
HSNMP_ENTITY hDestE
HSNMP_CONTEXT hC
HSNMP_PDU hP
//接收到消息
if(SnmpRecvMsg(m_hSession,&hSrcEntity,&hDestEntity,&hContext,&hPdu) == SNMPAPI_FAILURE)
smiINT PDU_
smiINT error_
smiINT error_
//提取PDU中的数据
if(SnmpGetPduData(hPdu,&PDU_type,NULL,&error_status,&error_index,&hVbl) == SNMPAPI_FAILURE)
//SNMP数值转换函数
string CManager::ValueToString(smiVALUE sValue)
{char cBuffer[1500];
memset(cBuffer,0,1500);
switch(sValue.syntax)
{case SNMP_SYNTAX_NSAPADDR:
case SNMP_SYNTAX_IPADDR:
sprintf(cBuffer,"%d.%d.%d.%d",sValue.value.string.ptr[0],sValue.value.string.ptr[1],sValue.value.string.ptr[2],sValue.value.string.ptr[3]);
case SNMP_SYNTAX_OPAQUE:
case SNMP_SYNTAX_OCTETS:
if(sValue.value.string.len==0)
sprintf(cBuffer,"OCTETS NULL");
{memset(sValue.value.string.ptr+sValue.value.string.len,0,1);
sprintf(cBuffer,"%s",sValue.value.string.ptr);
case SNMP_SYNTAX_TIMETICKS:
int iHours,iMinutes,iS
lUptime=sValue.value.uNumber/100;
iHours=(int)(lUptime/3600);
iMinutes=(int)((lUptime%3600)/60);
iSeconds=(int)((lUptime%60));
sprintf(cBuffer,"%d时,%d分,%d秒",iHours,iMinutes,iSeconds);
case SNMP_SYNTAX_INT:
sprintf(cBuffer,"%d",sValue.value.sNumber);
case SNMP_SYNTAX_UINT32:
case SNMP_SYNTAX_CNTR32:
case SNMP_SYNTAX_GAUGE32:
sprintf(cBuffer,"%U",sValue.value.uNumber);
sprintf(cBuffer,"NULL");
return string(cBuffer);
//获得路由器信息函数
bool CManager::GetAValue(const string& strOID,string& strResult)
{HSNMP_VBL hV
smiOID sOIDR
smiVALUE sV
strvec strOIDA
strOIDArray.push_back(strOID+".0");
//发送请求列表string没有成功
if(!Send(strOIDArray,SNMP_PDU_GET))
//没有接收到应答
if(!Receive(hVbl))
//计算返回Vbl的行数
iCount = SnmpCountVbl(hVbl);
if(iCount!=1)
{strResult="SnmpCounVbl error!";
//取返回结果
if(SnmpGetVb(hVbl,1,&sOIDRecv,&sValue) == SNMPAPI_FAILURE)
{strResult="SnmpGetVb error!";
strResult=ValueToString(sValue);
SnmpFreeVbl(hVbl);
//获得路由表信息函数
bool CManager::GetTable(strvec strOIDArray, strvec_vec& strResultTable)
HSNMP_VBL hV
smiOID sOIDS
smiOID sOIDR
smiVALUE sV
int iCount,iOIDL
char cBuffer[100];
if (strOIDArray.empty())
//计算OID标识符的长度
iOIDLen=count((strOIDArray[0]).begin(),(strOIDArray[0]).end(),'.')+1;
while(true)
{//发送请求列表string没有成功
if(!Send(strOIDArray))
//没有接收到应答
if(!Receive (hVbl))
//计算返回Vbl的行数
iCount = SnmpCountVbl(hVbl);
for(int i=0;i
{//取返回结果
if(SnmpGetVb(hVbl,i+1,&sOIDRecv,&sValue)==SNMPAPI_FAILURE)
{ErrorMessage("获取结果失败!");
memset(cBuffer,0,100);
SnmpStrToOid(strOIDArray[i].c_str(),&sOIDSend);
SnmpOidToStr(&sOIDRecv,100,cBuffer);
strOIDArray[i]=string(cBuffer);
//判断格式是否一致,决定是否继续循环
SnmpOidCompare(&sOIDSend,&sOIDRecv,iOIDLen,&lIfEnd);
if(lIfEnd !=0)
strResultTable[i].push_back(ValueToString(sValue));
if(lIfEnd !=0)
SnmpFreeVbl(hVbl);
//获得本机地址函数
string CManager::GetLocalIP()
{char cHost[512];
PHOSTENT pHostIP;
string HostIP;
if (gethostname(cHost, sizeof(cHost))==0)
{pHostIP = gethostbyname(cHost);
if(pHostIP !=NULL)
HostIP = inet_ntoa(*(struct in_addr *)(pHostIP-&h_addr_list[0]));
return HostIP;
//错误信息函数
void CManager::ErrorMessage(string strMessage)
//事件处理函数
void CManager::SetEvent()
{::SetEvent(m_hEvent);
//事件回调函数
SNMPAPI_STATUS CALLBACK CManager::Callback(HSNMP_SESSION hSession,
HWND hWnd,UINT wMsg,WPARAM wParam,LPARAM lParam,LPVOID lpClientData)
{((CManager*)lpClientData)-&SetEvent();
// Main.CPP: 主函数的实现
//#include "Manager.h"
void main(int argc,char *argv[])
{//检查输入命令格式
if(argc!=3)
{cout&&"Please input command:SnmpManager ip_address community"&&
//初始化CManger对象
CManager cManger(argv[1],argv[2]);
bool Status=cManger.InitSnmp();
//输出路由器的基本信息
cout&&"----------------------GetValue Text------------------------"&&
if((Status=cManger.GetAValue("1.3.6.1.2.1.1.1",Result))==false)
cout&&"GetAnValue error!"&&
cout&&Result&&
//输出路由器的路由表信息
cout&&"----------------------GetTable Test------------------------"&&
strvec RouteOidA
RouteOidArray.push_back ("1.3.6.1.2.1.4.21.1.1");
RouteOidArray.push_back ("1.3.6.1.2.1.4.21.1.2");
RouteOidArray.push_back ("1.3.6.1.2.1.4.21.1.7");
RouteOidArray.push_back ("1.3.6.1.2.1.4.21.1.8");
RouteOidArray.push_back ("1.3.6.1.2.1.4.21.1.11");
strvec_vec IpResultTable(RouteOidArray.size());
if (Status=cManger.GetTable(RouteOidArray,IpResultTable)==false)
cout&&"GetTable error"&&
{for(strvec_vec::iterator it1=IpResultTable.begin();it1!=IpResultTable.end();it1++)
{strvec AGroup=*it1;
for(strvec::iterator it2=AGroup.begin();it2!=AGroup.end();it2++)
{cout&&"*it2"&&" ";}
按赞数排序
你提的问题太大了,建议自己看,不懂的地方函数名拉出来google
大家都忙 都没时间给你看这么复杂的程序
自己先看看吧 有什么细节的问题到这里提问
C++到C的话,有很多东西可能都要自己写代码去实现了,要么就得找C版本的库代替,这个工作量真的很大;
有C语言的基础入门C++也不是很难
cout && *** &&
相当于printf
typedef vector strvec_
是类型重定义, 具体百度一下std::vector就知道了
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐VC++6.0运行简单C语言程序的过程_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
VC++6.0运行简单C语言程序的过程
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩3页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多关于 vc6.0兼容性问题win8 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信