Mxode/CSDN-C_Language-2013_2023 huggingface dataset:
user-0 提问: 怎么用C语言编写以下代码

回复:
user: user-1
content: 强烈鄙视6楼，人家小孩子刚开始学编程，得锻炼自学能力，你给人家实现了就显得你很了得？？ 授之以鱼不如授之以渔，懂？？

user: user-2
content: 不一定对，仅供参考： int Encode(     const char * pcSendText,     char * pcPacketBuff) {     int i,j;     char c;      i=0;     j=0;     pcPacketBuff[i]='S';     i++;     while (1) {         c=pcSendText[j];         j++;         if (0==c) break;         switch (c) {         case 'S':             pcPacketBuff[i]='C';             i++;             pcPacketBuff[i]='A';             i++;         break;         case 'E':             pcPacketBuff[i]='C';             i++;             pcPacketBuff[i]='B';             i++;         break;         case 'C':             pcPacketBuff[i]='C';             i++;             pcPacketBuff[i]='C';             i++;         break;         default:             pcPacketBuff[i]=c;             i++;         break;         }     }     pcPacketBuff[i]='E'; }   int Decode(     const char * pcPacket,     char * pcRecvText) {     int i,j;     char c1,c2;      i=0;     j=0;     while (1) {         c1=pcPacket[j];         if (0==c1) break;         c2=pcPacket[j+1];                if ('S'==c1) {             j++;         } else if ('C'==c1 && 'C'==c2) {             pcRecvText[i]='C';i++;             j+=2;         } else if ('C'==c1 && 'A'==c2) {             pcRecvText[i]='S';i++;             j+=2;         } else if ('C'==c1 && 'B'==c2) {             pcRecvText[i]='E';i++;             j+=2;         } else if ('E'==c1) {             break;         } else {             pcRecvText[i]=c1;i++;             j++;         }     } }

user: user-0
content: 谢谢提供，我改修下就行了

user: user-0
content: 主要是我不懂怎么实现转义和解析，求帮忙

user: user-3
content: 感觉这两个接口是有问题的，但是也可以写

user: user-4
content: 引用 2 楼 u012279204 的回复:但是都看不懂，没办法下手啊 那就看懂了再下手

user: user-0
content: 但是都看不懂，没办法下手啊

user: user-5
content: 作业题，自己好好做！有不懂的，或者代码有问题再来问问
user-0 提问: 关于malloc

回复:
user: user-0
content: 引用 1 楼 spirit008 的回复:http://blogimg.chinaunix.net/blog/upfile2/080101160701.pdf 善用搜索引擎 thanks.

user: user-1
content: 引用 2 楼 jerry_dqh 的回复:我估计是函数重载了吧，原生的malloc只有一个参数。这个某个网络编程特别重载的malloc函数点C后缀 那么 应该不是重载 C没重载  也许是 宏 吧

user: user-2
content: 引用 楼主 cogbee 的回复:在in.c文件里面有这么一句： oia=(struct in_ifaddr *)malloc(sizeof *oia,M_IFADDR,M_WAITOK) 这个应该是分配空间吧。malloc后面3个参数是什么情况？请教大虾，谢谢！ 我估计是函数重载了吧，原生的malloc只有一个参数。这个某个网络编程特别重载的malloc函数

user: user-3
content: http://blogimg.chinaunix.net/blog/upfile2/080101160701.pdf 善用搜索引擎
user-0 提问: 关于select机制和套接字的问题

回复:
user: user-1
content: 1楼上说得对，断掉后服务器是非堵塞且会收到一个长度为0的包，所以要处理接收为0的状态。 而且客户端断开是不会发sigpipe信号，只有服务器没有处理0长的包，继续发送数据给断了socket才有可能受到sigpipe信号。

user: user-2
content: select监听一个断裂的套接字时，通信断开，则客户端不会有数据过来，select却成了非阻塞状态，认为有数据，但是会读不出来。  if(FD_ISSET(lSockFd,&read_set) {      count = recv(lSockFd,buf,LEN,0);     if((count == 0)||(count == -1))     {        /* 这两种情况都可认为是链路关闭*/     } } 在select 时候，可以进行对端的连接检测，链路关闭则是断开。。。这样就可以进行判断，可以删除！
user-0 提问: binder_poll()中的一段代码

回复:
user: user-1
content: && 前为假 后面就不执行  && 前为真 后面执行

user: user-0
content: 不习惯这个写法，嘿嘿

user: user-2
content: 逻辑运算你都不懂了?
user-0 提问: 如何用时间控制程序的运行

回复:
user: user-0
content: 你好   谢谢你的解答  对我很有帮助  我还想问一下   怎么使用逻辑时间控制  而不使用机械时间？就是整个程序的时间计算使用逻辑时间

user: user-1
content: #pragma comment(lib,"user32") #include <stdio.h> #include <time.h> #include <sys/timeb.h> #include <windows.h> char datestr[16]; char timestr[16]; char mss[4]; void log(char *s) {     struct tm *now;     struct timeb tb;      ftime(&tb);     now=localtime(&tb.time);     sprintf(datestr,"%04d-%02d-%02d",now->tm_year+1900,now->tm_mon+1,now->tm_mday);     sprintf(timestr,"%02d:%02d:%02d",now->tm_hour     ,now->tm_min  ,now->tm_sec );     sprintf(mss,"%03d",tb.millitm);     printf("%s %s.%s %s",datestr,timestr,mss,s); } VOID CALLBACK myTimerProc1(   HWND hwnd, // handle of window for timer messages   UINT uMsg, // WM_TIMER message   UINT idEvent, // timer identifier   DWORD dwTime // current system time ) {  log("In myTimerProc1\n"); } VOID CALLBACK myTimerProc2(   HWND hwnd, // handle of window for timer messages   UINT uMsg, // WM_TIMER message   UINT idEvent, // timer identifier   DWORD dwTime // current system time ) {  log("In myTimerProc2\n"); } int main() {     int i;     MSG msg;      SetTimer(NULL,0,1000,myTimerProc1);     SetTimer(NULL,0,2000,myTimerProc2);     for (i=0;i<20;i++) {         Sleep(500);         log("In main\n");         if (GetMessage(&msg,NULL,0,0)) {             TranslateMessage(&msg);             DispatchMessage(&msg);         }      }     return 0; } //2012-07-26 17:29:06.375 In main //2012-07-26 17:29:06.875 In myTimerProc1 //2012-07-26 17:29:07.375 In main //2012-07-26 17:29:07.875 In myTimerProc2 //2012-07-26 17:29:08.375 In main //2012-07-26 17:29:08.375 In myTimerProc1 //2012-07-26 17:29:08.875 In main //2012-07-26 17:29:08.875 In myTimerProc1 //2012-07-26 17:29:09.375 In main //2012-07-26 17:29:09.890 In myTimerProc2 //2012-07-26 17:29:10.390 In main //2012-07-26 17:29:10.390 In myTimerProc1 //2012-07-26 17:29:10.890 In main //2012-07-26 17:29:10.890 In myTimerProc1 //2012-07-26 17:29:11.390 In main //2012-07-26 17:29:11.890 In myTimerProc2 //2012-07-26 17:29:12.390 In main //2012-07-26 17:29:12.390 In myTimerProc1 //2012-07-26 17:29:12.890 In main //2012-07-26 17:29:12.890 In myTimerProc1 //2012-07-26 17:29:13.390 In main //2012-07-26 17:29:13.890 In myTimerProc2 //2012-07-26 17:29:14.390 In main //2012-07-26 17:29:14.390 In myTimerProc1 //2012-07-26 17:29:14.890 In main //2012-07-26 17:29:14.890 In myTimerProc1 //2012-07-26 17:29:15.390 In main //2012-07-26 17:29:15.890 In myTimerProc2 //2012-07-26 17:29:16.390 In main //2012-07-26 17:29:16.390 In myTimerProc1 //2012-07-26 17:29:16.890 In main //2012-07-26 17:29:16.890 In myTimerProc1 //2012-07-26 17:29:17.390 In main //2012-07-26 17:29:17.890 In myTimerProc2 //2012-07-26 17:29:18.390 In main //2012-07-26 17:29:18.390 In myTimerProc1 //2012-07-26 17:29:18.890 In main //2012-07-26 17:29:18.890 In myTimerProc1 //2012-07-26 17:29:19.390 In main //2012-07-26 17:29:19.890 In myTimerProc2

user: user-2
content: 定时器

user: user-3
content: 开线程，循环 + sleep

user: user-4
content: signal函数吧

user: user-5
content: 面向对象语言用定时器咯，过程的话用循环+sleep咯
user-0 提问: linux下面的信号的问题？？？

回复:
user: user-1
content: 引用 2 楼 user-3 的回复:man 7 signal 里面有解释   Real-time Signals        Linux  supports real-time signals as originally defined in the POSIX.1b        real-time extensions (and now included in  POSIX.1-2001).   Linux  sup-        ports  32  real-time signals, numbered from 32 (SIGRTMIN) to 63 (SIGRT-        MAX).  (Programs should always refer to real-time signals  using  nota-        tion  SIGRTMIN+n,  since  the  range of real-time signal numbers varies        across Unices.)         Unlike standard signals, real-time signals have no predefined meanings:        the entire set of real-time signals can be used for application-defined        purposes.  (Note, however, that the  LinuxThreads  implementation  uses        the first three real-time signals.)  ++

user: user-2
content: 你列出来的都是不可靠信号，后面的都是可靠信号，也是后来扩充的！ 那里都是有介绍的！ 答案楼上。

user: user-3
content: man 7 signal 里面有解释   Real-time Signals        Linux  supports real-time signals as originally defined in the POSIX.1b        real-time extensions (and now included in  POSIX.1-2001).   Linux  sup-        ports  32  real-time signals, numbered from 32 (SIGRTMIN) to 63 (SIGRT-        MAX).  (Programs should always refer to real-time signals  using  nota-        tion  SIGRTMIN+n,  since  the  range of real-time signal numbers varies        across Unices.)         Unlike standard signals, real-time signals have no predefined meanings:        the entire set of real-time signals can be used for application-defined        purposes.  (Note, however, that the  LinuxThreads  implementation  uses        the first three real-time signals.)

user: user-0
content: 这些信号中34以前的  在网上都能找到确切的意思  但是34以后的就找不到了 请问谁有34以后的每一个信号的  功能的解释  能否告诉我  谢谢各位！！！
user-0 提问: 关于vector new delete的问题

回复:
user: user-1
content: #include <iostream> #include <vector> using namespace std;  typedef struct //定义结构体AA {     int a; } AA;  int main() {     vector<AA> tempa(2); //定义AA类型的向量      vector<AA>  *p1=new vector<AA>(4);//定义AA类型的指针     vector<AA>  *p2=new vector<AA>(4);//定义AA类型的指针      p1=&tempa;      cout<<p1->size()<<endl;     cout<<(*p1).size()<<endl;      cout<<p2->size()<<endl;     cout<<(*p2).size()<<endl;      cout<<tempa.size()<<endl;     delete p1;     delete p2;     cout<<"press key to coutinue...";     cin.sync();     cin.get();     return 0; }   可以看出p的类型了吧。我初学者，如果说的不对的地方请包涵。

user: user-2
content: struct AA{ int x,y; };  int main() {     //1)     vector <AA> *p=new vector <AA>(4);     delete p;     //2)     vector <AA> *pa=new vector <AA>[4];     for(int i=0;i<4;i++)(pa+i)->resize(4);      delete []pa;         //3)     vector <AA> a;       //4)     vector<AA> v(4);     return 0; }  这些都不会出错 你的 new,和delete []不匹配，所以出错。

user: user-3
content: delete P;
user-0 提问: 判断ip地址属不属于某个区间

回复:
user: user-1
content: 先把 所有的 小段  都补成    三位数， 然后 转化成 字符串，或者数字都可以

user: user-2
content: 妈的,老子得了精神病

user: user-3
content: 直接字符串比较可以吧

user: user-4
content: 转成整数比大小就可以了

user: user-5
content: 引用 楼主 nadleeh123 的回复:RT，ip就是大端格式的  私有ip  ，从协议栈里面搞下来的，大家有没神马好思路没  效果很简单,实现这种逻辑效果   192.168.1.1 <= 192.168.10.11 <= 192.168.22.255   PS;递归别来 转成word32型，比如0xc0000002,就是192.0.0.2

user: user-6
content: 引用 1 楼 nice_cxf 的回复:转成整数比大小就可以了  ++ 本质上就是一个int

user: user-7
content: 转成DWORD比较

user: user-8
content: 引用 1 楼 nice_cxf 的回复:转成整数比大小就可以了  这个是最好的选择！

user: user-9
content: 引用 1 楼 nice_cxf 的回复:转成整数比大小就可以了 英雄所见略同。

user: user-9
content: 引用 2 楼 max_min_ 的回复:直接字符串比较可以吧 好象不行。
user-0 提问: 求教hash值和数组下标对应的问题

回复:
user: user-1
content: #include <stdio.h> int d[12]={26,31,353,387,91,28,337,12,140,496,1,111}; int i; int main() {     for (i=0;i<12;i++) {         printf("%3d %lld\n",d[i],(((unsigned long long int)d[i] * 2654435769ull) & 0xFFFFFFFFull) >> 28);     }     return 0; }

user: user-1
content: #include <stdio.h> int d[12]={26,31,353,387,91,28,337,12,140,496,1,111}; int i; int main() {     for (i=0;i<12;i++) {         printf("%3d %I64d\n",d[i],(((unsigned __int64)d[i] * 2654435769ui64) & 0xFFFFFFFFui64) >> 28);     }     return 0; } // 26 1 // 31 2 //353 2 //387 2 // 91 3 // 28 4 //337 4 // 12 6 //140 8 //496 8 //  1 9 //111 9 //

user: user-2
content: 假设这个数组，可以放下97个元素，  那么我们只放 30个 int a[97]; int hash(int val){...return ...;}; a[hash(n)]= n; 这样，数值和表就建立了联系；  哈希算法可以确保哈希值在数组容量之内。 如果是空表，直接赋值就行。 否则要检查，是否有冲突，有冲突要处理哈希值的冲突。

user: user-0
content: 上班闲逛，在网上看到关于hash算法的东西，如下： 对于32位整数值，hash算法为：index = value * 2654435769 >> 28; 有如下value值和数组位置对应关系： 本地传图片半天都没传上去，我就手写吧，大家将就着看： 数组位置     value值（链表） 0            1          26 2          31 353 387  3          91 4          28 337 5 6          12 7           8          140 496 9          1   111 10 11 12 13 14 15  我想问的是通过那个公式算出的值，怎么就和数组小标对应起来了呢，是怎么对应上的呢？？？

user: user-2
content: 你那不还是有个链表吗，那个是防止冲突用的。 数据在链表中。

user: user-1
content: 引用 8 楼 najiutan 的回复:[quote=引用 5 楼 zhao4zhong1 的回复:] 无视本ID的代码，你会浪费一大截生命。 哥，你不告诉我，我死都整不出来，万谢[/quote] 过了啊。

user: user-0
content: 引用 5 楼 zhao4zhong1 的回复:无视本ID的代码，你会浪费一大截生命。 哥，你不告诉我，我死都整不出来，万谢

user: user-0
content: 结贴！！！呵呵

user: user-0
content: 引用 3 楼 zhao4zhong1 的回复:#include <stdio.h> int d[12]={26,31,353,387,91,28,337,12,140,496,1,111}; int i; int main() {     for (i=0;i<12;i++) {         printf("%3d %I64d\n",d[i],(((unsigned __int64)d[i] * 2654435769ui64) & 0xFFFFFFFFui64) >> 28);     }     return 0; } // 26 1 // 31 2 //353 2 //387 2 // 91 3 // 28 4 //337 4 // 12 6 //140 8 //496 8 //  1 9 //111 9 //  谢谢，我之前没写程序来算就直接在win下面提供的计算器算的，算出的结果居然对不上，干才用程序一算还真的是这些值。

user: user-1
content: 无视本ID的代码，你会浪费一大截生命。

user: user-0
content: 引用 2 楼 user-2 的回复:假设这个数组，可以放下97个元素，  那么我们只放 30个 int a[97]; int hash(int val){...return ...;}; a[hash(n)]= n; 这样，数值和表就建立了联系；  哈希算法可以确保哈希值在数组容量之内。 如果是空表，直接赋值就行。 否则要检查，是否有冲突，有冲突要处理哈希值的冲突。 我知道是这个意思，但是通过上面的算法得到的值不是数组的下标值，我就奇怪了，不知道是通过什么方式对应的
user-0 提问: 编译报错，函数返回类型？

回复:
user: user-0
content: 引用 1 楼 user-4 的回复:要么进行函数的原型声明,要么把函数的实现放到函数的调用之前. 的确是函数声明的问题，不声明，gcc就默认返回int...

user: user-1
content: 49行改为single = (long)a[i] * myExponentiation(x, i);

user: user-2
content: 你返回的 return -1;  这是不是long型啊。。。  return -1L;

user: user-3
content: return (long)-1; return -1L; 都可以； -1 不是long 类型； 你的类型检查太严格，所以 这个return -1；不能通过；   引用 楼主 cc_mugiwala 的回复: long myExponentiation(int x, int i) {         if (i == 0) {                 return (long)1;         } else if (i == 1) {                 return (long)x;         } else if (i > 1) {                 if (i%2 == 0) {                         return myExponentiation(x*x, i/2);                 } else {                         return myExponentiation(x*x, i/2) * x;                 }         } else if (i < 0) {                return -1;//  -1 是整型 int，不是 long      } }

user: user-4
content: 要么进行函数的原型声明,要么把函数的实现放到函数的调用之前.
user-0 提问: 想问一下GCC编译器下的程序需要注意什么？？

回复:
user: user-1
content: 你的冒泡写的有问题，head3也参与了排序，链表头变成了最小的一项，简单来说排好序后是这样的，： 头->1->2->3  你的变成了 1->2->3->头 （这个主要看头的指数的大小，因为你未指定，所以可能正，可能负，从你的截图看是正的，一般不同机器，不同编译器，未分配数都不一样的，所以你的VS和gcc结果就有差异了） 然后你执行合并的时候少了1项，多了一项head3。 你这样改： int i, j; 	NODE *p = head3; 	int count = 0; 	while (p->next != NULL) 	{ 		count++; 		p = p->next; 	} 	for (i = 0; i < count - 1; i++) /* 冒泡法排序 */ 	{ 		q = head3; 		p = head3->next; 		for (j = 0; j < count - i - 1; j++) 		{ 			if (p->exp > p->next->exp) 			{ 				q->next=p->next; 				p->next=p->next->next; 				q->next->next=p; 			} 			q = q->next; 			p = q->next; 		} 	} 	/*-----------------------------*/ 	p3 = head3 ->next; 	pre = head3; 	while (p3->next != NULL) 	{ 		if (p3->exp == p3->next->exp) 		{ 			p3->coef += p3->next->coef; 			temp = p3->next; 			p3->next = temp->next; 			free(temp); 			if (p3->coef == 0) 			{ 				temp = p3; 				pre->next=p3->next; 				free(temp); 			} 		} 		else 		{ 			pre = pre->next; 			p3 = pre->next; 		} 	} } 后面的没什么问题，就是有点乱，我简单改了下。 还有就是一点，一个函数尽量不要写太长，明确一个函数的职责，一个函数是排序就排序，是合并就合并，最后在按顺序调用这些函数，这样以后容易阅读，写太长了反而不知道这个函数的目的是什么了。

user: user-0
content: 就是结果有误,编译正确.

user: user-2
content: 结果有误 给的什么提示？