问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言解析,解释一下执行步骤

发布网友 发布时间:2022-04-30 04:07

我来回答

3个回答

懂视网 时间:2022-04-30 08:28

官方给的链接打不开,而且里面的逻辑,每次都会打开文件,所以自己做了点个修改,发上来,借大家参考:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <string>
#include <vector>
#include <fstream>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <assert.h>

class IP17MON {
public:
 static bool init(const std::string strPathToDataFile = "./17monipdb.dat") {
		if(is_init) {
			return true;
		}

 printf("Opening %s
", strPathToDataFile.c_str());
 std::ifstream ifDataFile(strPathToDataFile.c_str(), std::ios::binary);
 if (ifDataFile.is_open() == false) {
  printf("%m
");
  return false;
 }
 // std vector reserve
		vecDataFile.assign(std::istreambuf_iterator<char>(ifDataFile), std::istreambuf_iterator<char>());
 printf("Load %lu bytes success
", vecDataFile.size());
  
 unsigned int uiIndexLen = 0;
 memcpy(&uiIndexLen, &vecDataFile[0], 4);
 uiIndexLen = ntohl(uiIndexLen);
 printf("uiIndexLen = %d
", uiIndexLen);
 pIPIndex = &vecDataFile[4];
 pIPData = &vecDataFile[uiIndexLen];
		is_init = 1;
 return true;
 }

 static std::string find(const std::string strIP) { 
 struct sockaddr_in stSockAddrInet;

		memset(&stSockAddrInet, 0, sizeof(struct sockaddr_in));
 if(inet_aton(strIP.c_str(), &stSockAddrInet.sin_addr) == 0) {
  printf("convert error
");
  return "";
 }
 unsigned int uiIP = ntohl(stSockAddrInet.sin_addr.s_addr);
 
 // atoi The string can contain additional characters after those 
 // that form the integral number, which are ignored and have no 
 // effect on the behavior of this function.
 int iFirst = atoi(strIP.c_str());
 int iStart = 0;
 memcpy(&iStart, pIPIndex+(iFirst*4), 4);
		printf("iStart = %d
", iStart);
 int iMaxComLen = pIPData - pIPIndex - 1024 - 4;
  
 int iIndexOffset = -1;
 unsigned char ucIndexLength = 0;
 for (iStart = iStart * 8 + 1024; iStart < iMaxComLen; iStart += 8) {
  unsigned int uiCurrIP = 0;
  memcpy(&uiCurrIP, pIPIndex+iStart, 4);
  uiCurrIP = ntohl(uiCurrIP);
  if (uiCurrIP >= uiIP) {
  iIndexOffset = 0;
  memcpy(&iIndexOffset, pIPIndex+iStart+4, 3); 
  memcpy(&ucIndexLength, pIPIndex+iStart+7, 1); 
  break;
  }
 }
  
 if (iIndexOffset == -1) {
  return "";
 }
  
 std::string strRegion(pIPData + iIndexOffset - 1024, ucIndexLength);
 return strRegion;
 }
public:
 static std::vector<char> vecDataFile;
 static char *pIPIndex, *pIPData;
	static int is_init;
};
char *IP17MON::pIPIndex;
char *IP17MON::pIPData;
int IP17MON::is_init = 0;
std::vector<char> IP17MON::vecDataFile;
 
extern "C" const char *find_monip(const char *ip)
{
 if (IP17MON::init() == false) {
		return "";
	}
 return IP17MON::find(ip).c_str(); 
}

  

C语言解析17monipdb.dat(http://www.ipip.net/)免费数据库

标签:

热心网友 时间:2022-04-30 05:36

switch(x)
---------x=1
所以执行
case
1:后面的语句
接着switch(y)
-----------y=0
所以执行
case
0:后面的语句
a++
-----------即a=a+1,这时a=0+1=1
执行break跳出switch语句
因为
switch(x)的
case
1
没有break所以继续执行case2
case2:a++;b++
;-----------a=a+1=1+1=2;b=b+1=0+1=1;
case2后面有break语句所以
跳出switch语句
执行
printf("a=%d,b=%d\n",a,b);
这条语句会在屏幕上打印a=2,b=1【换行】

热心网友 时间:2022-04-30 06:54

授人以鱼不如授人以渔。。。。。。。。
建议你去看看单步调试,在调试中单步执行,可以查看各各变量的变化情况还有每步执行哪一句。。。。
这是方法,你总不可能每次都问人吧,以后长点的程序就没人看了。。。
这个顺序如下,
switch(x),x=1,所以进入case1:
switch(y)
y=0,所以执行case0:a++
,现在a=1,break,退出switch(y) ,由于没有break,所以进入case2,a++,b++;break;,现在a=2,b=1;
break退出switch(x),
printf,这个不用我说吧
C语言解析,解释一下执行步骤

1:后面的语句 接着switch(y)---y=0 所以执行 case 0:后面的语句 a++ ---即a=a+1,这时a=0+1=1 执行break跳出switch语句 因为 switch(x)的 case 1 没有break所以继续执行case2 case2:a++;b++ ;---a=a+1=1+1=2;b=b+1=0+1=1;case2后面有break语句所以 跳出switch语句 ...

c语言求运行详细过程

程序开始执行,主函数调用函数my_put,读入字符a,因为,a不等于c,所以再次调用my_put,读入b,依然不等于c,再调用my_put,读入c,c等于c执行if下面的输出字符ch,即输出c,函数结束,返回上一次调用的语句后面的代码执行,再输出b,再返回上一次调用的语句后面的代码执行,再输出a,程序结束。

C语言一道简单的代码,麻烦帮我解析一下,我表示看不懂。。。

if(x&lt;y) 由于10&lt;20,所以 跳到if(!ok1) 这里ok1=5 表示非0 ,所以 !ok=0,所以程序接着执行else后面的 if(ok2) 因为ok2=0;所以接着执行a=-1 整个流程是:if (x&lt;y)-&gt;if(!ok1)-&gt;else-&gt;if(ok2)-&gt;a=-1

C语言中,程序的一个完整的运行过程是怎样的?

1、一个C语言源程序可以由一个或多个源文件组成。2、每个源文件可由一个或多个函数组成。3、一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。是整个程序的入口。4、源程序中可以有预处理命令(包括include 命令,ifdef、ifndef命令、define命令),预处理命令通常应放在源...

C语言,可以的话讲一下每一步呗。求大佬帮忙

1、根据题意,要使用结构体封装参数,因此需定义一个包含全部圆环参数的结构类型。2、圆环参数需要输入,因此要定义一个输入函数,负责输入参数,验证参数,并存储到对应的结构变量。3、解析功能需求,实现体积和面积分别需要计算圆的面积、周长和柱侧面积。所以程序应包含所有实现功能的函数,分别为:计算圆...

谁能帮我解决下面的C语言问题啊,最好能说明解析过程。

1、结果:1 解析:执行switch(a%3),由于a%3=0,满足case 0,因此执行其后语句m++,接着执行break语句,由于break语句有跳出switch语句的功能,因此在此处跳出switch语句,执行printf语句,m自加过一次,故输出结果:1;2、结果:**0***2 解析:道理同第1题,执行switch(a),满足条件进入switch...

C语言程序解析?

分析:\n 表示换行 d 表示以十进制形式输出带符号整数(正数不输出符号)f 表示以小数形式输出单、双精度实数 2.include "stdio.h"main(){int x;char y;x=65;y='B';printf("x=%c\n",x);printf("y=%c\n",y);printf("y=%d\n",y);} 运行截图 分析:c 表示输出单个字符 3.include ...

求解析一道C语言程序,能否详细解析一下每个步骤,我完全不知道k和m与...

fun(int x)x只是个形式上的参数,这里用来指代(1)和(2)传进来的参数(1)(2)看下面 { static int a=3;在你的这个fun函数里并没有用到传进来的x,通常是要用的 a+=3;这里相当于a=a+3,就是a=3+3,a=6 return (a);返回a } main(){ int k=2,m=1,n;n=fun(k);(1...

C语言 请看一下 g=++a+a++那句 是怎么执行的 我是这么想的:根据结合...

g = (++a)+(a++);运算符++的用法就不用多说了,++在前,先加再用,++在后,先用后加,而小括号()对于运算对象只用一个变量的时候是没有作用的,因此,如果a在这条语句执行前是7的话:先执行++a,得a = 8;再执行g = a+a,得g = 16,最后a++,得到a = 9.++的核心用法就在于它...

c语言,while的使用

第一步:判断*y(即y指向的字符)是不是0,不是0则条件成立,指向0则条件不成立;第二步:执行y++;,就是让指针y指向下一个字符;第三步:根据第一步判断的结果,如果条件成立,则回到第一步开始下一轮循环;如果不成立,则循环结束。解析:进入循环前,y指向是的是字符串x的首字符。进入循环...

一个c语言的执行是从开始,结束 c语言运行步骤 c语言六个步骤 c语言基本步骤 编写c语言的基本步骤 c语言编程步骤 c语言开发的六个步骤 c语言编译步骤 c语言怎么执行
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
2022容易放款的银行小贷有哪些?正规小额贷款机构有哪些?分享五个银行... p40pro屏幕怎么判断是哪个供应商 调序治疗仪调序治疗仪功效范围 淘宝买到假货怎么投诉获得赔偿?东西有质量问题怎么解决? windows7系统,安装了个MAXDOS,重启之后直接进入MAXDOS,我怎样才可以... xp系统装上矮人dos工具箱或者maxdos重新启动进入dos命令符下可不可以... ...运行的操作系统”一个是MaxDos7.1另一个就是windows xp 可滋泉活泉卸妆水功能特点 徐子淇的阔太脸穿啥都高级,细吊带红裙配长卷发,又美出圈了,你爱了... 保险公司的底薪有多少钱 人脸识别智慧社区建设解决方案 智慧社区门禁卡人脸如何删除 智慧社区项目中,小区充电桩和人脸识别门禁哪个更好做? 智慧社区可以解决业主哪些问题呢? 智慧社区的门禁现在都是采用人脸识别的,都准确吗? 智慧社区审核通过人脸无法识别能更换吗。 智慧社区概念是不错,可大家觉得小区的人脸识别系统管用吗? 智慧社区U9系统可以支持人脸识别门禁吗? 人脸识别在智慧社区中有哪些应用优势呢? 烟感一般多久换一次电池 kidde烟雾报警器怎么换电池 WPS表格怎么快速设置自动分班 买了个烟感器,不会安装。请问电池应该怎样弄呢? 烟感器电池问题 烟感报警器电池没电了,我拆下来了,看着电池近在咫尺,可不知怎样把 烟雾报警器间断响一下,怎么换电池,有主机,好多分机分那种 烟感器电池怎么拔出 消防烟感器如何换电池? 我从星空天文网下了带音乐的屏幕保护程序,为什么屏保时没声音呢? 为什么我现在屏幕保护没声音啊 我是一名鲜奶促销员,因业绩优异,又擅长管理,老板叫我我入股,投一点钱,投一点精力,现在订鲜奶的生意 平常大家喝的一名鲜奶怎么送上门啊 一鸣真鲜奶吧可以用嘉兴餐饮消费券吗? 一鸣蛋奶和光明牛奶哪个好? 在丽水一鸣真鲜奶吧上班怎么样,轻松吗? 现今到一鸣买面包牛奶安全吗? 《为什么倒掉牛奶都不愿意送人》以前上历史 一鸣真鲜奶吧上班发展前景怎样?我是一名21岁男生,店里消费看到员工多为女性,我心里矛盾,我一个男生 现在的鲜牛奶有激素吗 牛奶鉴定师是什么意思? 在中国什么品牌的 鲜奶最好 啊 牛奶配送员的奇幻人生好看吗 异地身份证丢了怎么办挂失 怎样在微白水发信息 微白水主页、怎样赞学生的文章 《《鬼迷心窍》白水》txt全集下载 爱拼才会赢之与魔同归的txt全集下载地址 哪有中国八大菜系之川菜 徽菜下载 身份证怎么挂失异地? 《白水青菜》txt下载在线阅读,求百度网盘云资源