Mxode/CSDN-C_Language-2013_2023 huggingface dataset:
user-0 提问: oc中，在一个类中组合了另一个类，那另一个类的成员变量如何直接调用？

回复:
user: user-1
content: 这是C语言区，不光有C++的，怎么OC都来了。。 不是写OC的，不过这样貌似可以 #import <Foundation/Foundation.h>  @interface figure : NSObject @property float height; @property int weight; @property int handLength; @end  @implementation figure @end  @interface person : NSObject @property figure *shencai; @property int age; @end  @implementation person @end   int main(int argc, const char * argv[]) {      @autoreleasepool {         person *p = [person new];                  p.shencai = [figure new];                  p.age = 10;         p.shencai.height = 123;                  NSLog(@"%f\n", p.shencai.height);     }     return 0; }
user-0 提问: 服务端出现SYN_RECV问题

回复:
user: user-1
content: 引用 3 楼 nemo_87 的回复:[quote=引用 1 楼 hnwyllmm 的回复:] 楼主的程序会有大批量的客户端连过来吗？而且都是短连接？ 看到这种情况用pstack看下你的程序卡在哪里，是不是有死锁的情况 SYN_RECV和CLOSE_WAIT应该都是卡死了，后面一个是连接关闭处理的异常，没有调用close及时关闭 如果连接过大，试着调整backlog参数试试  连接的量是比较大的，客户端采用短链接，目前backlog是5，要不要改大一些[/quote] 试一下，但是感觉这个不是根本原因，还是程序处理 不够及时，看看程序都会卡在哪里

user: user-0
content: 引用 1 楼 hnwyllmm 的回复:楼主的程序会有大批量的客户端连过来吗？而且都是短连接？ 看到这种情况用pstack看下你的程序卡在哪里，是不是有死锁的情况 SYN_RECV和CLOSE_WAIT应该都是卡死了，后面一个是连接关闭处理的异常，没有调用close及时关闭 如果连接过大，试着调整backlog参数试试  连接的量是比较大的，客户端采用短链接，目前backlog是5，要不要改大一些

user: user-2
content: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters] "TcpTimedWaitDelay"=dword:0000001e

user: user-1
content: 楼主的程序会有大批量的客户端连过来吗？而且都是短连接？ 看到这种情况用pstack看下你的程序卡在哪里，是不是有死锁的情况 SYN_RECV和CLOSE_WAIT应该都是卡死了，后面一个是连接关闭处理的异常，没有调用close及时关闭 如果连接过大，试着调整backlog参数试试
user-0 提问: 字符串数组的长度定义问题

回复:
user: user-1
content: 引用 1 楼 brookmill 的回复:这个叫“可变长数组”，有些编译器支持，有些编译器不支持。 http://blog.csdn.net/code_crash/article/details/4854921 一楼正解

user: user-2
content: 可变长数组是C99引入的，只能用于支持c99的编译器，比如gcc。VC、VS之类的就不行。

user: user-3
content: 这说明你的编译器支持c99,c99的相关特性请自行百度。还有为了保证代码的可移植性，最好不要这么写。

user: user-2
content: 这个叫“可变长数组”，有些编译器支持，有些编译器不支持。 http://blog.csdn.net/code_crash/article/details/4854921
user-0 提问: printf与scanf通用版本的宽字符版的参数应该如何写?

回复:
user: user-1
content: 引用 1 楼 focuslight 的回复:加上_t  _tscanf(_T("%s"),  strBuffer);+1，虽然看不懂是什么意思

user: user-2
content: 加上_t  _tscanf(_T("%s"),  strBuffer);
user-0 提问: 新人对findstr函数不懂，求教大神

回复:
user: user-1
content: 引用 6 楼 bjym1987 的回复:[quote=引用 5 楼 zhangxiangDavaid 的回复:] ms写的这个strstr简洁，但不高效 这个请问怎样写高效[/quote] 字符串的查找可以使用KMP之类的算法

user: user-2
content: 引用 5 楼 zhangxiangDavaid 的回复:ms写的这个strstr简洁，但不高效 这个请问怎样写高效

user: user-1
content: ms写的这个strstr简洁，但不高效

user: user-3
content: C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\strstr.c /*** *strstr.c - search for one string inside another * *       Copyright (c) Microsoft Corporation. All rights reserved. * *Purpose: *       defines strstr() - search for one string inside another * *******************************************************************************/  #include <cruntime.h> #include <string.h>  /*** *char *strstr(string1, string2) - search for string2 in string1 * *Purpose: *       finds the first occurrence of string2 in string1 * *Entry: *       char *string1 - string to search in *       char *string2 - string to search for * *Exit: *       returns a pointer to the first occurrence of string2 in *       string1, or NULL if string2 does not occur in string1 * *Uses: * *Exceptions: * *******************************************************************************/  char * __cdecl strstr (         const char * str1,         const char * str2         ) {         char *cp = (char *) str1;         char *s1, *s2;          if ( !*str2 )             return((char *)str1);          while (*cp)         {                 s1 = cp;                 s2 = (char *) str2;                  while ( *s1 && *s2 && !(*s1-*s2) )                         s1++, s2++;                  if (!*s2)                         return(cp);                  cp++;         }          return(NULL);  }

user: user-1
content: 能把main函数也出来吗？

user: user-4
content: if(numStr == 0)   这里直接引用 substr  函数 即可

user: user-5
content: https://technet.microsoft.com/en-us/library/bb490907.aspx
user-0 提问: ubuntu C语言程序输出这样子是什么情况

回复:
user: user-1
content: 引用 6 楼 my_live_123 的回复:贴代码出来瞅瞅+1,论坛有部分lz这样只说问题不贴代码的

user: user-2
content: 贴代码出来瞅瞅

user: user-3
content: 引用 4 楼 zhao4zhong1 的回复:看显示乱码的数据的原始字节内容。 我测试了下，  '!'<buf[j]&&buf[j]<='~' //'!'也应该算作可显示字符，所以是'!'<=buf[j]

user: user-4
content: 看显示乱码的数据的原始字节内容。

user: user-3
content: 引用 2 楼 zhao4zhong1 的回复:void HexDump(char *buf,int len,int addr) {     int i,j,k;     char binstr[80];      for (i=0;i<len;i++) {         if (0==(i%16)) {             sprintf(binstr,"%08x -",i+addr);             sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);         } else if (15==(i%16)) {             sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);             sprintf(binstr,"%s  ",binstr);             for (j=i-15;j<=i;j++) {                 sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');             }             printf("%s\n",binstr);         } else {             sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);         }     }     if (0!=(i%16)) {         k=16-(i%16);         for (j=0;j<k;j++) {             sprintf(binstr,"%s   ",binstr);         }         sprintf(binstr,"%s  ",binstr);         k=16-k;         for (j=i-k;j<i;j++) {             sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');         }         printf("%s\n",binstr);     } }  对电脑而言没有乱码，只有二进制字节；对人脑才有乱码。啊 GBK:0xB0 0xA1,Unicode-16 LE:0x4A 0x55,Unicode-16 BE:0x55 0x4A,UTF-8:0xE5 0x95 0x8A 这个函数是干什么用的/

user: user-4
content: void HexDump(char *buf,int len,int addr) {     int i,j,k;     char binstr[80];      for (i=0;i<len;i++) {         if (0==(i%16)) {             sprintf(binstr,"%08x -",i+addr);             sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);         } else if (15==(i%16)) {             sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);             sprintf(binstr,"%s  ",binstr);             for (j=i-15;j<=i;j++) {                 sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');             }             printf("%s\n",binstr);         } else {             sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);         }     }     if (0!=(i%16)) {         k=16-(i%16);         for (j=0;j<k;j++) {             sprintf(binstr,"%s   ",binstr);         }         sprintf(binstr,"%s  ",binstr);         k=16-k;         for (j=i-k;j<i;j++) {             sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');         }         printf("%s\n",binstr);     } }  对电脑而言没有乱码，只有二进制字节；对人脑才有乱码。啊 GBK:0xB0 0xA1,Unicode-16 LE:0x4A 0x55,Unicode-16 BE:0x55 0x4A,UTF-8:0xE5 0x95 0x8A

user: user-5
content: 换行符有问题?输出的后面应该是个换行符吧 修改下终端的编码格式试试
user-0 提问: 关于字符串的疑问

回复:
user: user-1
content: 建议在凡是要用scanf输入一个字符的地方，都将 char c; scanf("%c",&c); 改为 char s[2]; char c; scanf("%1s",s);c=s[0];

user: user-0
content: 引用 3 楼 vnvlyp 的回复:你都没有输入k吧。。 没有机会输入k,它就自动结束了

user: user-2
content: 你都没有输入k吧。。

user: user-0
content: 引用 1 楼 user-4 的回复:第一个scanf之后, 还有一个"回车"在缓冲区中  第二个scanf得到了这个"回车"  解决办法就是2个scanf之间加一句getchar(), 过滤掉回车 加了getchar（）；后还是显示那个结果，好奇怪

user: user-3
content: 需要在多处，加上getchar(); 1.  scanf("%d", &n); getchar();  2.  for (b = 0; b < n; b++){ 	for (i = 0; i < 56; i++){ 		scanf("%c", &a[b][i]); 		} 	getchar(); }  3.  scanf("%d", &k); getchar();  4.  for (t = 0; t < k; t++){ 	scanf("%d", &c[t]); } getchar();

user: user-3
content: scanf("%d", &n); char a[n][56];  这种维数可变的数组，并不是所有编译器都支持的。所以这种语法并不推荐使用。

user: user-4
content: 第一个scanf之后, 还有一个"回车"在缓冲区中  第二个scanf得到了这个"回车"  解决办法就是2个scanf之间加一句getchar(), 过滤掉回车
user-0 提问: 一本学校ACM是怎么学习的

回复:
user: user-1
content: 关于自己是否适合编程的很简单的测试： 在报纸或杂志上随便找一段约1000字的文章，在Word中输入一遍。输完后再参考下面答案：  A里面有10处以上文字或标点错误 B里面没有文字或标点错误并敢为此跟人打赌 C里面没有文字或标点错误并且字体和排版完全与原稿一致 D打印在半透明的纸上和原稿重叠在一起检查一模一样，且自我感觉很有成就感  A不适合编程（理由：打字准确度偏低、粗心大意） B初级程序员（理由：打字准确度很高、认真细致、自信、理解全角半角概念） C高级程序员（理由：在B的基础上理解字体和排版也是电脑打印的重要因素、但相比D还不够偏执、精益求精、结果可验证） D软件项目经理（理由：能针对项目给出令人信服的细致到极点的需求说明和典型测试用例。用户几乎挑不出毛病。专业！）  如果想从A变成B的话，到我的资源http://download.csdn.net/detail/zhao4zhong1/4084259里面下载“适合程序员的键盘练习”

user: user-1
content: 《全国青少年信息学竞赛培训教材——复赛》

user: user-2
content: 敲代码 刷题n~

user: user-3
content: 我想参加叻

user: user-4
content: 有校队，先报名，然后上半年课，之后考试选人

user: user-5
content: 本人木有参加过ACM。但是学习这件事，只能自己好好琢磨。

user: user-6
content: 一本学校都是从中学开始学习的。

user: user-7
content: 本科进实验室说明你还是很勤奋的骚年，进实验室还是学习为主，主要靠自觉，到哪都一样！
user-0 提问: 请问如何写入文件

回复:
user: user-0
content: 多谢。没想到是这里地方出错了。一开始还往更深的地方想了。多谢您的指点！

user: user-1
content: memset(buf+i,mask[rand()%2],fileLength); 这溢出了吧！ 应该是buf[i]=mask[rand()%2];吧。 还有你没delete[] buf;

user: user-0
content: 错误信息如下： Windows 已在 文件涂写.exe 中触发一个断点。  其原因可能是堆被损坏，这说明 文件涂写.exe 中或它所加载的任何 DLL 中有 Bug。  原因也可能是用户在 文件涂写.exe 具有焦点时按下了 F12。  输出窗口可能提供了更多诊断信息。  可是涉及到堆栈，我记得就算是16位程序也是有64kb的堆栈空间的，我要读的文件一共才500多字节，应该不会导致溢出的吧？ 32位程序的堆栈空间应该更大才对吧？
user-0 提问: 小白求教：有n个整数，使前面各数顺序向后移m个位置，最后m个数变成前面m个数。写一函数move

回复:
user: user-1
content: 有 n>=m*2 和n<m*2 的区别

user: user-2
content: int move(int *p, int n, int m);  int main() {	 	int m, n, i, *p; 	scanf("%d", &n); 	if((p = (int *)calloc(n, sizeof(int))) == NULL) 		exit(1); 	for(i=0; i<n; i++) 		scanf("%d", p + i); 	scanf("%d", &m); 	if(1 == move(p, n, m)) { 		for(i=0; i<n; i++) 			printf("%d ", *(p + i)); 		printf("\n"); 	} else { 		printf("参数有误!\n"); 	} 	return 0; }  int move(int *p, int n, int m) { 	int i, j, *t; 	j = 0; 	if(n < m) 		return 0;  	if(n == m) 		return 1;  	if((t = (int *)calloc(m, sizeof(int))) == NULL) 		exit(0); 	 	for(i=n-m; i<n; i++){ 		t[j++] = *(p + i); 	} 	for(i=n-m-1; i>=0; i--) 		*(p + i + m) = *(p + i); 	for(i=m-1; i>=0; i--) 		*(p + i) = t[i]; 	return 1; }

user: user-3
content: 后m个数移到前面后，保持前后顺序吗？ 如，12345    m=2 移动后， 是 45123，还是54123？
user-0 提问: 数据类型`运算符与算数方式我太懂

回复:
user: user-1
content: 加减乘除运算，输出结果

user: user-2
content: 这个语句的作用是要输出“计算公式和计算结果” 假如你要计算1+2，结果为3； 那么你的number1里面存了1，number2存了2，ch存了‘+’，result存了3；  printf("运算结果:%d%c%d=%d\n",number1,ch,number2,result);　 结果就是： “运算结果： %d----------对应整数number1=1； %c-----------对应字符ch=‘+’ %d----------对应整数number2=2； = %d----------对应整数result=3； \n---------换行”  就是 “运算结果：1+2=3”
user-0 提问: 二个有意思的C调试现象

回复:
user: user-1
content: 打个比方吧： 每成功出生一个健康的小孩，不管他/她，不管漂亮难看，不管大小，不管黑白，反正一切不管了，就是一个原生态！此时无论你对TA做什么，TA都不会觉得你的行为对TA有什么重要的价值与意义！而且很快你会发现无论你做什么，都是在自娱自乐。对TA无所谓的！如果因为你对TA做什么有什么不好的后果，那这个后果（比如被TA父母暴揍）只能自负！ 好了，下面对号 小孩 = 分配的内存 原生态 = 未初始化 你对小孩的行为 = 读写内存 行为无意义 = 随机值没用 被揍 = 随机值给程序引入了bug 后果自负 = bug自己调 有没有秒懂？

user: user-2
content: 引用 1 楼 Bokutake 的回复:你的一个“现象”的程序有没有多运行几次呢？你可以多运行几次，结果不一定都是你说的那个规律。 局部变量都是在栈里分配的，栈空间是不会自动清空的，如果你没有显式指定初始化语句，所以值会是随机的，不能保证会是多少。 第二个，其实地址不可能是负值，因为x86的Linux程序里栈空间位于用户地址空间的最高处（3G用户空间）。所以程序执行时，j的地址接近3G的位置。最高位是1，所以会打印为负值。打印地址一般用%x。没初始化就是随即的

user: user-3
content: 1 没发现 2. 你自己转的long int 还问为什么是负的?

user: user-4
content: 你的一个“现象”的程序有没有多运行几次呢？你可以多运行几次，结果不一定都是你说的那个规律。 局部变量都是在栈里分配的，栈空间是不会自动清空的，如果你没有显式指定初始化语句，所以值会是随机的，不能保证会是多少。 第二个，其实地址不可能是负值，因为x86的Linux程序里栈空间位于用户地址空间的最高处（3G用户空间）。所以程序执行时，j的地址接近3G的位置。最高位是1，所以会打印为负值。打印地址一般用%x。
user-0 提问: 用c语言写的递归函数遇到了问题求大神帮看看

回复:
user: user-0
content: 谁能给个正确的解答呀

user: user-1
content: void Search(int Remainder, int Start, int nTerm){ 	int i; 	if (Remainder == 0){ 		Count++; 		if (Count % 4 != 1){ 			printf(";"); 		} 		printf("%d=%d", N, Terms[0]); 		for (i = 1; i<nTerm; i++){ 			printf("+%d", Terms[i]); 		} 		if (Count % 4 == 0){ 			printf("\n"); 		} 	} 	else{ 		for (i = Start; i <= Remainder; i++){ 			Terms[nTerm] = i; 		} 		//循环完i就是Remainder+1，那么你这里调用递归第一个参数是-1，跟没调用一样 		Search(Remainder - i, i, nTerm + 1); 	} }
user-0 提问: < 小白求助求>2的30次方，反过来求30√1073741824,c语言实现

回复:
user: user-1
content: 搜“竖式开方”

user: user-2
content: 找到 2的30次开方的数学逼近公式，然后实现这个公式的code。

user: user-2
content: 找到 2的30次方的数学逼近公式，然后实现这个公式的code。

user: user-0
content: 引用 1 楼 user-3 的回复:pwo(2,1.0/30)  谢了，我也是用的这个，我还以为是我这个方法不对，原来是我在用SCANF给值的时少了个&,这个编译器没报错···

user: user-3
content: pow(1073741824, 1.0 / 30)

user: user-3
content: pwo(2,1.0/30)
user-0 提问: 很诡异的错误。

回复:
user: user-1
content: 没代码说个毛线

user: user-2
content: 代码贴出来看看

user: user-3
content: 同意1L说法， 逻辑处理有问题， 有没有下标越界， 野指针， 使用了未初始化的变量等。

user: user-4
content: 应该还是逻辑上有些问题，看看是不是有变量未初始化或者某些if语句的else没有添加，从“double”转换到“unsigned long”这个warning也算是比较烦人了，最好能处理一下。

user: user-5
content: 调试的时候奔溃，然后看堆栈。

user: user-6
content: 不存在什么诡异的问题  能运行就是能运行，不能运行就是不能运行，就算你运行一万次遇到一次出问题，那也一定是你程序的问题～～  你这种错误很显然是内存溢出了 或者 数组越界了

user: user-7
content: 有没有调用与系统资源有关的函数？请求系统资源以后有没有检查是否成功？

user: user-8
content: 楼上说的野指针有道理，我昨天也碰到和你一样的情况，编译没问题，运行就会这样。后来我发现是结构体变量指针，没有用malloc分配一个内存空间，就直接给结构体里面的成员赋值

user: user-9
content: 崩溃的时候在弹出的对话框按相应按钮进入调试，按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处，看不懂时双击下一行，直到能看懂为止。
user-0 提问: poj 1045 调试过，与网上ac代码没有区别，怎么老是wA

回复:
user: user-1
content: 邮箱多少，发过来。我发给你~

user: user-1
content: http://download.csdn.net/download/u010174146/7299005 惭愧，我没有做过poj题目，比你外行。这是我在网上搜索到的答案，和你的答案一样。你参考一下，网上这类问题很多，多看看，综合参考一下。

user: user-0
content: 哥们，下载分不够
user-0 提问: 全局断电

回复:
user: user-1
content: 只看标题，我还以为某供电局全部断电了呢！  关于自己是否适合编程的很简单的测试： 在报纸或杂志上随便找一段约1000字的文章，在Word中输入一遍。输完后再参考下面答案：  A里面有10处以上文字或标点错误 B里面没有文字或标点错误并敢为此跟人打赌 C里面没有文字或标点错误并且字体和排版完全与原稿一致 D打印在半透明的纸上和原稿重叠在一起检查一模一样，且自我感觉很有成就感  A不适合编程（理由：打字准确度偏低、粗心大意） B初级程序员（理由：打字准确度很高、认真细致、自信、理解全角半角概念） C高级程序员（理由：在B的基础上理解字体和排版也是电脑打印的重要因素、但相比D还不够偏执、精益求精、结果可验证） D软件项目经理（理由：能针对项目给出令人信服的细致到极点的需求说明和典型测试用例。用户几乎挑不出毛病。专业！）  如果想从A变成B的话，到我的资源http://download.csdn.net/detail/zhao4zhong1/4084259里面下载“适合程序员的键盘练习”

user: user-1
content: 按Alt+8键打开汇编指令窗口，将断点挪到更精确的汇编指令处。
user-0 提问: 关于libevent删除事件的问题（还请大神耐心看下，不胜感激~）

回复:
user: user-0
content: 引用 3 楼 zhao4zhong1 的回复:嘿嘿！这分得的轻松哈！  是赵大师的答案给力啊，那个例子很不错

user: user-1
content: 嘿嘿！这分得的轻松哈！

user: user-0
content: 引用 1 楼 zhao4zhong1 的回复:http://www.baigoogledu.com/s.php?hl=zh-CN&q=libevent+%CA%B9%D3%C3   多谢赵大师，我查了下可以使用         release_sock_event(ev);         close(sock);单独关掉client的监听。  非常感谢~~

user: user-1
content: http://www.baigoogledu.com/s.php?hl=zh-CN&q=libevent+%CA%B9%D3%C3
user-0 提问: Ｃ语言求助

回复:
user: user-1
content: 引用 14 楼 dumanyi007 的回复:又看到赵老师了，好开心 开心就好！

user: user-2
content: 又看到赵老师了，好开心

user: user-1
content: 引用 11 楼 benben0729 的回复:结果就是有好多错误信息。 偶遇到类似问题都是用 “每次用/*...*/注释掉不同部分再重新编译，直到定位到具体语法出错的位置。” 的方法解决的。

user: user-3
content: 结果就是有好多错误信息。

user: user-1
content: 关于自己是否适合编程的很简单的测试： 在报纸或杂志上随便找一段约1000字的文章，在Word中输入一遍。输完后再参考下面答案：  A里面有10处以上文字或标点错误 B里面没有文字或标点错误并敢为此跟人打赌 C里面没有文字或标点错误并且字体和排版完全与原稿一致 D打印在半透明的纸上和原稿重叠在一起检查一模一样，且自我感觉很有成就感  A不适合编程（理由：打字准确度偏低、粗心大意） B初级程序员（理由：打字准确度很高、认真细致、自信、理解全角半角概念） C高级程序员（理由：在B的基础上理解字体和排版也是电脑打印的重要因素、但相比D还不够偏执、精益求精、结果可验证） D软件项目经理（理由：能针对项目给出令人信服的细致到极点的需求说明和典型测试用例。用户几乎挑不出毛病。专业！）  如果想从A变成B的话，到我的资源http://download.csdn.net/detail/zhao4zhong1/4084259里面下载“适合程序员的键盘练习”

user: user-4
content: # include<stdio.h> void main() { int x,y; x=18; y=16; y=x+y; printf("%d\n",y); return 0; }

user: user-5
content: 好不整齐

user: user-6
content: #include<stdio.h> void main() {     int x,y; 	x=12;y=13; 	y=x+y;   printf("%d\n",y); } 你把我这个重敲一遍，你那个中间写的有点问题，我编译不出来，估计中间英汉你交替了，特别是int那行，重新敲次

user: user-7
content: 最后一句没分号！终结此贴！

user: user-8
content: 你想干什么，代码敲错了

user: user-9
content: y=x+y 是把x+y后的值再赋给y，而不是数学意义上的相等

user: user-10
content: 引用 2 楼 adusuccessfully 的回复: #include <stdio.h> void main() { 	int  x,y; 	x=18; 	y=16; 	y=x+y; 	printf("%d\n",y); }  请问楼主要验证什么？？+1

user: user-11
content: #include <stdio.h> void main() { 	int  x,y; 	x=18; 	y=16; 	y=x+y; 	printf("%d\n",y); }  请问楼主要验证什么？？

user: user-12
content: 无语......
user-0 提问: c语言图形化界面问题

回复:
user: user-1
content: 打开visual studio，新建项目，c++→win32→win32应用程序→确定→生成项目 →运行。 至于添加其它东西可以百度 win32+关键词

user: user-2
content: 仅供参考：#pragma comment(lib,"user32") #pragma comment(lib,"gdi32") #include <windows.h> LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {     PAINTSTRUCT ps;     HDC hdc;     HFONT hfont,ohfont;     RECT r;     COLORREF oc;      switch(message) {     case WM_CLOSE://按Alt+F4退出         PostQuitMessage(0);         break;     case WM_PAINT:         BeginPaint(hWnd, &ps);         hdc = ps.hdc; // the device context to draw in         GetClientRect(hWnd, &r); // Obtain the window's client rectangle         hfont = CreateFont(240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "华文楷体");         ohfont=(HFONT)SelectObject(hdc,hfont);         oc=SetTextColor(hdc,0x00C080FF);         SetBkMode(hdc, TRANSPARENT);         TextOut(hdc,r.left+r.right/2-720, r.top+r.bottom/2-120,"最短画图程序",12);         SelectObject(hdc,ohfont);         SetTextColor(hdc,oc);         DeleteObject(hfont);         EndPaint(hWnd, &ps);         break;     default:         return DefWindowProc(hWnd, message, wParam, lParam);     }     return 0; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {     MSG msg             = {0};     WNDCLASS wc         = {0};     HBRUSH hbrh;     hbrh=CreateSolidBrush(0x00000000);     wc.lpfnWndProc      = WndProc;     wc.hInstance        = hInstance;     wc.hbrBackground    = hbrh;     wc.lpszClassName    = "minwindowsapp";     wc.hCursor          = LoadCursor(NULL,IDC_ARROW);     if( FAILED(RegisterClass(&wc)) ) return 1;      if(FAILED(CreateWindow(wc.lpszClassName,                         "Minimal Windows Application",                         WS_POPUP|WS_VISIBLE,                         0,                         0,                         GetSystemMetrics(SM_CXSCREEN),                         GetSystemMetrics(SM_CYSCREEN),                         0,                         0,                         hInstance,                         NULL)))         return 2;      while( GetMessage( &msg, NULL, 0, 0 ) > 0 ) {         DispatchMessage( &msg );     }     DeleteObject(hbrh);     return 0; }
user-0 提问: fopen打不开文本本件，返回空指针，是什么情况

回复:
user: user-1
content: 把编码方式变成mbcs 即：“使用多字节字符集”  操作步骤：右键项目-属性-配置属性-常规-字符集  代码(断点测试)： char* filename="F:\\sn.txt"; FILE* hFile; if ((hFile = _tfopen((char*)filename, _T("rb"))) == NULL)   { } else { }

user: user-2
content: 看看文件是否存在，是否有权限读写 最直接的就是把错误码打印出来

user: user-3
content: 调试看文件路径是否正确

user: user-4
content: 应该是文件没找到吧，捕捉一下错误。

user: user-5
content: 你没输入文件路径？参照3楼输入，或者直接把文件路径写在代码中，如：  fp=fopen(“filepath”, "r")

user: user-6
content: VC6：  工程、设置、Debug、U程序变量：填写命令行参数。 VS20XX：  项目、属性、配置属性、调试、命令参数：填写命令行参数。

user: user-7
content: 最关键的是，你的路径对不对， 给的相对路径还是绝对路径。 文件名给对没有， 或者把权限rw改成， 文件不存在就创建。  或者，不用命令行参数， 先给个固定的文件地址去打开看，再找到原因。
user-0 提问: 这个求两点距离的c源码有什么问题么？运行出错？

回复:
user: user-0
content: 蒽，前辈说得对，我发现自己的错误了~

user: user-1
content: 代码功能归根结底不是别人帮自己看或讲解或注释出来的；而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒：再牛×的老师也无法代替学生自己领悟和上厕所！ 单步调试和设断点调试（VS IDE中编译连接通过以后，按F10或F11键单步执行，按Shift+F11退出当前函数；在某行按F9设断点后按F5执行停在该断点处。）是程序员必须掌握的技能之一。

user: user-1
content: #include <stdio.h> #include <math.h> double distance(double x1, double y1, double x2, double y2); int main() {     int n;     double x1,y1,x2,y2;     double d[100]};     while (1) {         printf("please input the total group number(1..100)\n");         rewind(stdin);         scanf("%d",&n);         if (1<=n && n<=100) break;     }     printf("please input the numbers\n");     for (int i=0;i<n;i++)     {         scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);         d[i]=distance(x1,y1,x2,y2);     }     for (int a=0;a<n;a++)         printf("%.4lf\n",d[a]);     return 0; } double distance(double x1, double y1, double x2, double y2) {     return sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)); }
user-0 提问: Openssl 如何获取ECC  sm2证书公钥数据？

回复:
user: user-1
content: 可以的，直接解析X509，把公钥拿出来重写一下就行了。粘几行关键代码吧，希望对受困扰的小伙伴有用         x = strToX509(pbCert, pulCertLen); 	dwRet = getCertPubKey(x, &pRSAPubKeyBlob, &pECCPubKeyBlob); 	ECCPUBLICKEYBLOB  pec = { 0 };//目标公钥 	pec.BitLen = 256; 	int i = 0; 	for (i = 0; i < 64; i++){ 		if (i <= 31){ 			pec.XCoordinate[i] = 0; 			pec.YCoordinate[i] = 0; 		} 		else{ 			pec.XCoordinate[i] = pECCPubKeyBlob.XCoordinate[i - 32]; 			pec.YCoordinate[i] = pECCPubKeyBlob.YCoordinate[i - 32]; 		} 	} 其实就是公钥结构解析的问题，SM2公钥所需要的格式和X509解析出来的X,Y位置是颠倒的，要求的结果是X,Y数组前32为0；而X509提供的为后32为0，正好颠倒了。

user: user-2
content: 具体怎么解析公钥呢，最近也在搞这个，用openssl好像不行。

user: user-3
content: 有两种方案，比较简单的一种是自己封个接口去cert_info的pub_key里读data解析，另一种就是通过get_pubkey接口了，不过这个需要加入sm2的曲线参数，算法oid也要加，因为sm2和Openssl的ecc不太一样，中间还要改一些东西，一步一步的调试跟下来

user: user-4
content: 我最近也有这个问题，但说实话，ECC没人或没几个人能说的清楚。  网上的东西，都搬来搬去。  比如，最大的问题就是ECC算法的非对称加密解密。  网上根本没人谈及到过。

user: user-5
content: ecc的过程与rsa相比有很大的不同，ecc涉及到了很多额外的概念，比如group等等，另外ecc包含两套截然不同的机制ecdh ,ecdsa struct ec_key_st {     int version;     EC_GROUP *group;       EC_POINT *pub_key;       BIGNUM     *priv_key;      unsigned int enc_flag;     point_conversion_form_t conv_form;     int     references;     EC_EXTRA_DATA *method_data; } /* EC_KEY */;
user-0 提问: 菜鸟又来啦！！！如何把歌曲文件放到c对话框程序中

回复:
user: user-1
content: DirectShow 呵呵

user: user-0
content: 我引入到 资源中了，然后用 palysound 播放 老显示这个 问题   'PlaySoundA' : cannot convert parameter 1 from 'const int' to 'const char *'  ，我的语句是这样子的    	PlaySound(IDR_WAVE1,NULL,SND_RESOURCE);

user: user-0
content: 引用 3 楼 zhao4zhong1 的回复:打包到资源中。  老师，怎么打包到资源中呀/?新手勿喷

user: user-2
content: MAKEINTRESOURCE(IDR_WAVE1)

user: user-3
content: C语言对话框？ 对话框是MFC的吧？

user: user-4
content: 打包到资源中。

user: user-0
content: 我顶！ 大神快粗线
user-0 提问: 以每行一个单词打印其输出

回复:
user: user-1
content: 为什么不选下面简单的呢？#include <stdio.h> int main(void) { int c; int state = 0;  while((c = getchar())!= EOF) {       if(c == '\n' || c== ' ' || c == '\t')       {    putchar('\n');          } else { putchar(c); } } return 0; }

user: user-2
content: 这格式看着真难受。。。

user: user-3
content: #include <stdio.h> int main(void) { 	int c; 	int state = 0;  	while((c = getchar())!= EOF) 	{ 	      if(c == '\n' || c== ' ' || c == '\t') 	      { 		   putchar('\n'); 	         } 		else 		{ 			putchar(c); 		} 	} 	return 0; } 没那么麻烦 ， 吧问题简单化，这样子要还不能理解也没办法了

user: user-4
content: 运行试试，就知道了

user: user-5
content: 先不说程序，弄个例子试下，比如输入abcd    cde 很明显应该输出两个单词 abcd cde 两个单词之间的分隔符可以是空格、TAB和换行符，两个单词中间可以有多个分隔符，那么遇到分隔符的时候，可能是一个单词输入结束了，也可能就是上个分隔符的继续，就是多个分隔符，那怎么判断本次是一个单词的结束还是分割符的继续呢？ 可以用一个状态记录。如果用户输入了一个普通字符，那就认为当前状态“输入单词”；如果遇到了分隔符，那就设置状态为分隔符，并且如果当前状态是“输入单词”，那就说明这个单词输入结束了。  #include<stdio.h> #define OUT 0 #define IN 1 main(){     int c,state;     state=OUT;     while((c=getchar())!=EOF){         if(c==' '||c=='\n'||c=='\t'){   // 遇到了分隔符             if(state==IN){               // 当前状态为正在输入单词，说明单词输入结束了                 putchar('\n');                  state=OUT;            // 设置状态为分隔符             }         }else if(state==OUT){  // 如果是普通字符且状态是分隔符状态             state=IN;                   // 一个新单词开始了             putchar(c);         } else                             // 普通字符，状态不需要更新         putchar(c);     }    }
user-0 提问: 求一些C语言面试题和答案

回复:
user: user-1
content: 搜索里搜 面试题

user: user-2
content: 百度 里搜 面试题

user: user-3
content: 抛砖引玉  http://blog.csdn.net/hackbuteer1/article/details/6550824  http://wenku.baidu.com/link?url=EGdiKsrkjMmwpfUvh27xcoTZADrIEZa35FE6k0kT0LmdFx9va-J0jrKiL_I5fG3WyBgutVaqIxy4nXfbesadeUP8PD5iFn0p1OORnQeCMIi

user: user-4
content: 下面是本人今年参加笔试遇到的试题： 2015百度，腾讯，新浪，美团，360，去哪儿网，迈瑞，展讯通信，杰发科校园招聘笔试题（软件开发类） http://download.csdn.net/detail/adusuccessfully/8096019
user-0 提问: 新手C语言程序作业求教！！！！！！！

回复:
user: user-1
content: 引用 4 楼 sinat_27077631 的回复:[quote=引用 3 楼 u010005508 的回复:] scanf_s()在读取字符时必须提供一个数字以表明最多读取多少位字符。所以你要这样写scanf_s("%d%c%d=%d", &n, &a,1, &m, &sum1)才行！或者改用scanf()函数！ VS用scanf的话会报错啊[/quote] 怎么会报错了?你咋用的？

user: user-0
content: 引用 3 楼 u010005508 的回复:scanf_s()在读取字符时必须提供一个数字以表明最多读取多少位字符。所以你要这样写scanf_s("%d%c%d=%d", &n, &a,1, &m, &sum1)才行！或者改用scanf()函数！ VS用scanf的话会报错啊

user: user-1
content: scanf_s()在读取字符时必须提供一个数字以表明最多读取多少位字符。所以你要这样写scanf_s("%d%c%d=%d", &n, &a,1, &m, &sum1)才行！或者改用scanf()函数！

user: user-2
content: 代码里不让搞颜色，改成这样  scanf_s("%d%c%d=%d", &n, &a, 1,  &m, &sum1);

user: user-2
content: 在vs2013中运行的时候，把这句话改一下。  scanf_s("%d%c%d=%d", &n, &a, 1, &m, &sum1);
user-0 提问: 结构体内存空间

回复:
user: user-1
content: 2楼下解  引用 1 楼 user-3 的回复:union U 最大是13, 由于8字节对齐, sizeof U=16 color=4  16+4=20, 8字节对齐, 变成24        http://www.cnblogs.com/growing/archive/2010/08/18/1802162.html

user: user-2
content: 理解和讨论之前请先学会如何观察！  计算机组成原理→DOS命令→汇编语言→C语言（不包括C++）、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言（包括C++）、架构……  对学习编程者的忠告： 多用小脑和手，少用大脑、眼睛和嘴，会更快地学会编程！ 眼过千遍不如手过一遍！ 书看千行不如手敲一行！ 手敲千行不如单步一行！ 单步源代码千行不如单步Debug版对应汇编一行！ 单步Debug版对应汇编千行不如单步Release版对应汇编一行！  VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化，这样过一遍不就啥都明白了吗。 对VC来说，所谓‘调试时’就是编译连接通过以后，按F10或F11键单步执行一步以后的时候，或者在某行按F9设了断点后按F5执行停在该断点处的时候。 （Turbo C或Borland C用Turbo Debugger调试,Linux或Unix下用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。）  不要迷信书、考题、老师、回帖； 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实！  有人说一套做一套，你相信他说的还是相信他做的？ 其实严格来说这个世界上古往今来所有人都是说一套做一套，不是吗？  不要写连自己也预测不了结果的代码！

user: user-3
content: 引用 2 楼 Jutland 的回复:[quote=引用 1 楼 user-3 的回复:] union U 最大是13, 由于8字节对齐, sizeof U=16 color=4  16+4=20, 8字节对齐, 变成24        http://www.cnblogs.com/growing/archive/2010/08/18/1802162.htmlunion里面不是还有double=8，float=4吗？怎么不算进去[/quote] 联合体和结构体不一样, 联合体里面实际上只有一个变量, 去看看书上怎么说的

user: user-0
content: 引用 1 楼 user-3 的回复:union U 最大是13, 由于8字节对齐, sizeof U=16 color=4  16+4=20, 8字节对齐, 变成24        http://www.cnblogs.com/growing/archive/2010/08/18/1802162.htmlunion里面不是还有double=8，float=4吗？怎么不算进去

user: user-3
content: union U 最大是13, 由于8字节对齐, sizeof U=16 color=4  16+4=20, 8字节对齐, 变成24        http://www.cnblogs.com/growing/archive/2010/08/18/1802162.html
user-0 提问: C语言数据结构基础问题：两个有序链表并为一个有序链表

回复:
user: user-1
content: 有序链表合并且去重 http://blog.csdn.net/zhangxiangdavaid/article/details/26340587

user: user-2
content: -     if(pa->data<=pa->data){ +     if(pa->data<=pb->data){   找一个笔，一张纸，自己画！

user: user-3
content: 1, 有个pc和pa两个节点 [     ]        [     ]    ||             ||    pc          pa -------------------------- 2. pc->next = pa [     ]    ->  [     ]    ||             ||    pc          pa ---------------------------------- 3 pc=pa [      ]  ->[     ]                 || pc=pa
user-0 提问: 菜鸟求助一个简单问题

回复:
user: user-1
content: 引用 3 楼 xiaolei1982 的回复:[quote=引用 1 楼 a30037338 的回复:] 这个取决于你需要读取多少数据啊， 可以是一个结构体，也可以是一个数组。。  但是这个是二进制流，还有信号中断等处理，未必可以一次拿到啊[/quote] 如果被信号中断，会设置设置errno值为EINTR，你需要每次read后测定erron值以确定后续的操作。 像这样  again: if ((n = read(fd, buf, BUFFSIZE)) < 0) { if (errno == EINTR) goto again; /* just an interrupted system call */ /* handle other errors */ }   不同的系统有不同的设置，有些系统(比如BSD)把read系统调用被信号中断后自动重启，而不用显式处理EINTR；有些系统需要用户设置此行为属性。

user: user-1
content: 引用 3 楼 xiaolei1982 的回复:[quote=引用 1 楼 a30037338 的回复:] 这个取决于你需要读取多少数据啊， 可以是一个结构体，也可以是一个数组。。  但是这个是二进制流，还有信号中断等处理，未必可以一次拿到啊[/quote] Linux/Unix一切皆文件，不区分二进制还是文本流

user: user-0
content: 引用 1 楼 a30037338 的回复:这个取决于你需要读取多少数据啊， 可以是一个结构体，也可以是一个数组。。  但是这个是二进制流，还有信号中断等处理，未必可以一次拿到啊

user: user-2
content: 仅供参考：#include <stdio.h> #define field_offset(s,f) (int)(&(((struct s *)(0))->f)) struct AD  { int a; char b[13]; double c;}; #pragma pack(push) #pragma pack(1) struct A1  { int a; char b[13]; double c;}; #pragma pack(2) struct A2  { int a; char b[13]; double c;}; #pragma pack(4) struct A4  { int a; char b[13]; double c;}; #pragma pack(8) struct A8  { int a; char b[13]; double c;}; #pragma pack(16) struct A16 { int a; char b[13]; double c;}; #pragma pack(pop) int main() {     printf("AD.a %d\n",field_offset(AD,a));     printf("AD.b %d\n",field_offset(AD,b));     printf("AD.c %d\n",field_offset(AD,c));     printf("\n");     printf("A1.a %d\n",field_offset(A1,a));     printf("A1.b %d\n",field_offset(A1,b));     printf("A1.c %d\n",field_offset(A1,c));     printf("\n");     printf("A2.a %d\n",field_offset(A2,a));     printf("A2.b %d\n",field_offset(A2,b));     printf("A2.c %d\n",field_offset(A2,c));     printf("\n");     printf("A4.a %d\n",field_offset(A4,a));     printf("A4.b %d\n",field_offset(A4,b));     printf("A4.c %d\n",field_offset(A4,c));     printf("\n");     printf("A8.a %d\n",field_offset(A8,a));     printf("A8.b %d\n",field_offset(A8,b));     printf("A8.c %d\n",field_offset(A8,c));     printf("\n");     printf("A16.a %d\n",field_offset(A16,a));     printf("A16.b %d\n",field_offset(A16,b));     printf("A16.c %d\n",field_offset(A16,c));     printf("\n");     return 0; } //AD.a 0 //AD.b 4 //AD.c 24 // //A1.a 0 //A1.b 4 //A1.c 17 // //A2.a 0 //A2.b 4 //A2.c 18 // //A4.a 0 //A4.b 4 //A4.c 20 // //A8.a 0 //A8.b 4 //A8.c 24 // //A16.a 0 //A16.b 4 //A16.c 24 // //

user: user-3
content: 这个取决于你需要读取多少数据啊， 可以是一个结构体，也可以是一个数组。。

user: user-0
content: 引用 5 楼 my_live_123 的回复:[quote=引用 3 楼 xiaolei1982 的回复:] [quote=引用 1 楼 a30037338 的回复:] 这个取决于你需要读取多少数据啊， 可以是一个结构体，也可以是一个数组。。  但是这个是二进制流，还有信号中断等处理，未必可以一次拿到啊[/quote] 如果被信号中断，会设置设置errno值为EINTR，你需要每次read后测定erron值以确定后续的操作。 像这样  again: if ((n = read(fd, buf, BUFFSIZE)) < 0) { if (errno == EINTR) goto again; /* just an interrupted system call */ /* handle other errors */ }   不同的系统有不同的设置，有些系统(比如BSD)把read系统调用被信号中断后自动重启，而不用显式处理EINTR；有些系统需要用户设置此行为属性。[/quote]    非常感谢，但是我看的这是现在很出名的swoole的代码，代码里确实就是这样来读取一个结构的，我想应该是有什么作用，要不这么明显的错误，怎么会出现呢？
user-0 提问: 各种排序的辅助空间

回复:
user: user-1
content: 写一个排序的程序，看看里面用到了那些变量，变量大小跟输入有什么关系

user: user-2
content: 引用 2 楼 tianzhenseu 的回复:引用 1 楼 jiht594 的回复:书上有....要是有，我就不问了 算法导论上有详细的

user: user-3
content: 引用 2 楼 tianzhenseu 的回复:引用 1 楼 jiht594 的回复:书上有....要是有，我就不问了  百度百科 空间复杂度 http://baike.baidu.com/view/540497.htm  比如插入排序, 交换元素的时候, 需要一个额外的空间 如 int temp = a; a = b; b =tenp; 这个temp就是要算如空间复杂度, 因为n个元素排序只需要1(常数)个额外空间,空间复杂度是O(1)

user: user-4
content: 指完成算法至少需提供的额外存储空间。

user: user-0
content: 引用 1 楼 jiht594 的回复:书上有....要是有，我就不问了

user: user-3
content: 书上有....

user: user-5
content: 就是为了完成你的程序，你需要使用的保存信息的空间和
user-0 提问: 关于windows平台上GUI程序的绘图效率

回复:
user: user-1
content: 引用 1 楼 a30037338 的回复:opencv 。。 支持！  参考OpenCV源代码中逐像素处理相关源代码。

user: user-2
content: opencv 。。

user: user-3
content: 直接用Win API就是这种效果，他是用CPU来渲染的。属于串行处理。想加快速度就用其他支持并行的图形接口，什么OpenGL、DirectX、OpenCV的都可以。
user-0 提问: 遇到bug，不知道哪儿出问题，求助

回复:
user: user-0
content: #include <stdio.h> #define K 100000 int main(void) { 	int i,j,l,N[K],sum_time,sum_max; 	scanf("%d",&i); 	if(i>=K||i<1) 		return 1; 	for(j=1;j<=i;j++) 		scanf("%d",&N[j]);  	sum_time=sum_max=0;  	l=1; 	for(j=1;j<=i;j++) 	{ 		sum_time+=N[j]; 		if(sum_time>sum_max) 		{ 			sum_max=sum_time; 			l=j; 		} 		else if(sum_time<0) 		{	 			sum_time=0; 		} 	} 	if(sum_max==0) 		printf("%d %d %d",sum_max,N[1],N[i]); 	else 	{	 		for(j=l,sum_time=0;sum_time<sum_max;j--) 			sum_time+=N[j];	 		printf("%d %d %d",sum_max,N[j+1],N[l]); 	} 	return 0;	 }  这个代码运行的话测试比上面的好一点，但还是有一些问题

user: user-1
content: for(j=l,sum_time=0;sum_time！=sum_max;j++) sum_time+=N[j];//这里N[j]如果不是1, 运行之后, 很大 可能sum_time>sum_max, 死循环

user: user-0
content: 就是给定K个整数组成的序列{ N1, N2, ..., NK }，“连续子列”被定义为{ Ni, Ni+1, ..., Nj }，其中 1 <= i <= j <= K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 }，其连续子列{ 11, -4, 13 }有最大的和20。现要求你编写程序，计算给定整数序列的最大子列和，并且给出最大子列的第一个元素和最后一个元素（如果最大值为0，则输出第一个和最后一个元素，如果有相同的列，则输出子标小的列）。

user: user-2
content: 只想说一句，题目全是英文 看不懂要求

user: user-0
content: #include <stdio.h> #define K 100000 int main(void) { 	int i,j,l,N[K],sum_time,sum_max; 	scanf("%d",&i); 	if(i>K||i<1) 		return 1; 	for(j=1;j<=i;j++) 		scanf("%d",&N[j]);  	sum_time=sum_max=0;  	l=1; 	for(j=1;j<=i;j++) 	{ 		sum_time+=N[j]; 		if(sum_time>sum_max) 			sum_max=sum_time; 		else if(sum_time<0) 		{	 			sum_time=0; 			l=j+1; 		} 	} 	if(sum_max==0) 		printf("%d %d %d",sum_max,N[1],N[i]); 	else 	{	 		for(j=l,sum_time=0;sum_time<sum_max;j++) 			sum_time+=N[j];	 		printf("%d %d %d",sum_max,N[l],N[j-1]); 	} 	return 0;	 }
user-0 提问: libevent 如何选择epool模式通信？跪求大神解答

回复:
user: user-0
content: 引用 1 楼 user-2 的回复:event_get_supported_methods，这个函数查看libevent支持哪些后端方法（select、poll、epoll，，，） event_config_avoid_method，这个函数手动禁止掉一个后端方法 参考http://www.cnblogs.com/zhangchaoyang/articles/2683826.html  非常好，不愧是大神，非常感谢，那个例子很不错

user: user-0
content: 2楼大神给了很好的答案，非常感谢，也非常感谢3楼的热心帮助

user: user-1
content: 编译阶段会检测环境的

user: user-2
content: event_get_supported_methods，这个函数查看libevent支持哪些后端方法（select、poll、epoll，，，） event_config_avoid_method，这个函数手动禁止掉一个后端方法 参考http://www.cnblogs.com/zhangchaoyang/articles/2683826.html
user-0 提问: 统计问题

回复:
user: user-1
content: Linux：Ctrl+D Windows：Enter，Ctrl+Z，Enter

user: user-2
content: 引用 2 楼 z549069443 的回复:[quote=引用 1 楼 user-2 的回复:] 输入完了之后  回车 ctrl+z 回车 为什么是按Ctrl+z啊 书上没讲啊- -[/quote]  while((c=getchar())!=EOF) 遇到EOF结束, 书上没说EOF什么意思吗 http://baike.baidu.com/link?url=XXHULmcq8XPhM7BiMyVpfldSonpolgL29Omm4K9pckURJ-ggh1AdiKh65lqw6rmZyloRCaEW1D6G1NjPMLNUSa

user: user-0
content: 引用 1 楼 user-2 的回复:输入完了之后  回车 ctrl+z 回车 为什么是按Ctrl+z啊 书上没讲啊- -

user: user-2
content: 输入完了之后  回车 ctrl+z 回车
user-0 提问: 求解答

回复:
user: user-1
content: 应该就是2楼说的那个问题了

user: user-2
content: V的结果不对，V1的结果是对的；  4/3的结果是1，不是个小数；应该写4.0/3

user: user-3
content: 在我这里完全正确
user-0 提问: 如何对正在运行的程序的文件进行修改

回复:
user: user-0
content: 了解了，多谢各位的指点！

user: user-1
content: 去看看《操作系统》吧，操作系统肯定要保证对同一文件写操作进程之间互斥的。

user: user-2
content: http://bbs.csdn.net/topics/390968755
user-0 提问: c语言函数指针指向的函数的参数与定义该指针的原型参数个数不一致

回复:
user: user-1
content: 请问楼主找到答案了吗？  编译的地方有什么特殊的指定吗？  我也遇到了类似的黑魔法

user: user-2
content: C里面是允许的,C++不允许

user: user-3
content: 搜 “堆栈平衡” “调用约定” “参数默认值” "C和CPP编译的不同" 必有一款适合你！
user-0 提问: 求解，为何输出结果不一样。

回复:
user: user-0
content: 谢谢，文字貌似看的可以，你的那些程序真心看不懂

user: user-1
content: pb--与--pb含义不同 pb--是先capy再减一 --pb是先capy再减一

user: user-2
content: 支持2楼！  计算机组成原理→DOS命令→汇编语言→C语言（不包括C++）、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言（包括C++）、架构……  对学习编程者的忠告： 多用小脑和手，少用大脑、眼睛和嘴，会更快地学会编程！ 眼过千遍不如手过一遍！ 书看千行不如手敲一行！ 手敲千行不如单步一行！ 单步源代码千行不如单步Debug版对应汇编一行！ 单步Debug版对应汇编千行不如单步Release版对应汇编一行！  VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化，这样过一遍不就啥都明白了吗。 对VC来说，所谓‘调试时’就是编译连接通过以后，按F10或F11键单步执行一步以后的时候，或者在某行按F9设了断点后按F5执行停在该断点处的时候。 （Turbo C或Borland C用Turbo Debugger调试,Linux或Unix下用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。）

user: user-3
content: while( (pb--) >= b1) 004113FF  mov         eax,dword ptr [ebp-2Ch]  00411402  lea         ecx,[ebp-10h]  00411405  mov         edx,dword ptr [ebp-2Ch]  00411408  sub         edx,1  0041140B  mov         dword ptr [ebp-2Ch],edx  0041140E  cmp         eax,ecx  00411410  jb          wmain+5Eh (41141Eh)  00411412  mov         dword ptr [ebp-0F4h],1  0041141C  jmp         wmain+68h (411428h)  0041141E  mov         dword ptr [ebp-0F4h],0  00411428  cmp         dword ptr [ebp-0F4h],0  0041142F  je          wmain+83h (411443h)  		strcpy(b2, pb); 00411431  mov         eax,dword ptr [ebp-2Ch]  00411434  push        eax   00411435  lea         ecx,[ebp-20h]  00411438  push        ecx   00411439  call        @ILT+170(_strcpy) (4110AFh)  0041143E  add         esp,8  00411441  jmp         wmain+3Fh (4113FFh)  这是第一段的反汇编，我们可以看到编译器现将pb当前的值存储到eax寄存器中，然后利用edx寄存器对pb执行--的操作，但是要注意到接下来的cmp语句是用的eax的值进行的比较,ecx寄存器中存储的是b1的值。所以相对第二种而言，多执行了一次。要提醒的是，这种写法会导致内存访问越界，原因在于当eax指向b1第一个元素的时候，edx已经指向b1前面一个字节的未知内容，这样其实会把这个字节的内容也拷贝到b2中，这样加上结尾的'\0'一共9个字节,strlen调用的时候就会报一个数组越界的错误，不知道你运行的时候有没有出现。  	while( (--pb) >= b1) 004113FF  mov         eax,dword ptr [ebp-2Ch]  00411402  sub         eax,1  00411405  mov         dword ptr [ebp-2Ch],eax  00411408  mov         ecx,dword ptr [ebp-2Ch]  0041140B  lea         edx,[ebp-10h]  0041140E  cmp         ecx,edx  00411410  jb          wmain+64h (411424h)  		strcpy(b2, pb); 00411412  mov         eax,dword ptr [ebp-2Ch]  00411415  push        eax   00411416  lea         ecx,[ebp-20h]  00411419  push        ecx   0041141A  call        @ILT+170(_strcpy) (4110AFh)  0041141F  add         esp,8  00411422  jmp         wmain+3Fh (4113FFh)  第二段的反汇编，比较好理解了，利用eax寄存器对pb进行了--的操作，然后需要注意把自减的值又写回到了pb中，接着把这个值取到了edx中，接下来的cmp指令就是使用的edx中的值，所以会少执行一次，值得注意的是，这种写法不会出现访问越界。

user: user-4
content: 第一个：pb和b1比较之后再将pb减1 第二个：pb减1之后在将pb和b1比较
user-0 提问: 求助文本文件读和写的问题

回复:
user: user-0
content: 引用 3 楼 dooX8086 的回复:行未的换行符你没有处理 //------------------------------------ fgets(str[0],13,read);                        //读取filename1文件的.........发票起始号：  fputs(str[0],write);                          //将读取的数据写入filename2文件 fscanf(read,"%d",&Fpqsh);           // 读取 00000001 了,  但后面还有一个换行符  fprintf(write,"%d",Fpqsh);   fgets(str[1],13,read);     // 第二行  .... 因为前面还有一个换行符,........就有问题..  //----------------------------------------------------------------------------------- // 修改方式可把换行符读取掉就可以  fscanf(read,"%d ",&Fpqsh);    // %d 的后面加个空格  fprintf(write,"%d\n",Fpqsh);   // 写回 file2 时 添加一个换行符 // 其它类似...........   // ------------------------------ 你这样读法也太不科学了 .....  谢谢，你解释的很详细

user: user-1
content: 行未的换行符你没有处理 //------------------------------------ fgets(str[0],13,read);                        //读取filename1文件的.........发票起始号：  fputs(str[0],write);                          //将读取的数据写入filename2文件 fscanf(read,"%d",&Fpqsh);           // 读取 00000001 了,  但后面还有一个换行符  fprintf(write,"%d",Fpqsh);   fgets(str[1],13,read);     // 第二行  .... 因为前面还有一个换行符,........就有问题..  //----------------------------------------------------------------------------------- // 修改方式可把换行符读取掉就可以  fscanf(read,"%d ",&Fpqsh);    // %d 的后面加个空格  fprintf(write,"%d\n",Fpqsh);   // 写回 file2 时 添加一个换行符 // 其它类似...........   // ------------------------------ 你这样读法也太不科学了 .....

user: user-2
content: 如果你只是将a文件内容复制到b文件，像你那样得知道源文件每一行的内容及排列，假如内容或者行数太多的话，代码得有多长。。给你段参考： #include "stdio.h" void main() { 	FILE* pInFile=NULL; 	FILE* pOutFile=NULL; 	char ch=0; 	pInFile=fopen("D:\\filename1.txt","r"); 	if(pInFile) 	{ 		pOutFile=fopen("D:\\filename2.txt","w"); 		if(pOutFile) 		{ 			while((ch=getc(pInFile))!=EOF) 			{ 				putc(ch,pOutFile); 			} 			fclose(pOutFile); 		} 		fclose(pInFile); 	} }

user: user-3
content: fscanf(read,"%d",&Fpqsh); 后面加上fgetc(read), 读换行符  fgets(str[2],10,read);  长度10不对  fgets(str[3],45,read);    长度45不对
user-0 提问: C语言链表问题，求大神解答！标题长长长长长长长长长长长长长长长长长长一点！！

回复:
user: user-1
content: D:\codeblocks --project\约瑟夫问题\main.c|44|error: expected expression before 'struct'|

user: user-0
content: 引用 4 楼 Falleyes 的回复:#include <stdio.h> #include <stdlib.h>  struct student { 	int score; 	struct student *next; }Node;  struct student *creat(int n) { 	struct student *p1, *p2; 	int i; 	p1 = (struct student*)malloc(sizeof(struct student)); 	struct student *head; 	head = p1; 	for (i = 0; i<n; i++) 	{ 		p1->score = i + 1; 		p2 = (struct student*)malloc(sizeof(struct student)); 		p1->next = p2; 		p1 = p2; 	} 	p1->next = NULL; 	return head; };  void print(struct student *head, int n) { 	struct student *p1; 	p1 = head; 	while (p1->next->next != NULL) 	{ 		printf("%d ", p1->score); 		p1 = p1->next; 	} 	printf("%d\n", p1->score); }  int main() { 	int N; 	struct student *head; 	scanf("%d", &N); 	head = creat(N); 	print(head, N); 	return 0; }是的是的，谢谢啦！！！

user: user-2
content: #include <stdio.h> #include <stdlib.h>  struct student { 	int score; 	struct student *next; }Node;  struct student *creat(int n) { 	struct student *p1, *p2; 	int i; 	p1 = (struct student*)malloc(sizeof(struct student)); 	struct student *head; 	head = p1; 	for (i = 0; i<n; i++) 	{ 		p1->score = i + 1; 		p2 = (struct student*)malloc(sizeof(struct student)); 		p1->next = p2; 		p1 = p2; 	} 	p1->next = NULL; 	return head; };  void print(struct student *head, int n) { 	struct student *p1; 	p1 = head; 	while (p1->next->next != NULL) 	{ 		printf("%d ", p1->score); 		p1 = p1->next; 	} 	printf("%d\n", p1->score); }  int main() { 	int N; 	struct student *head; 	scanf("%d", &N); 	head = creat(N); 	print(head, N); 	return 0; }

user: user-3
content: N没有初始化。。。。

user: user-0
content: 引用 1 楼 hant1991 的回复:struct student *creat(int n)返回student指针，但是你的head是int型。#include <stdio.h> #include <stdlib.h>  struct student {     int score;     struct student *next; }Node;  struct student *creat(int n) {     struct student *p1,*p2;     int i;     p1=(struct student*)malloc(sizeof(struct student));     struct student *head;     head=p1;     for(i=0;i<n;i++)     {         p1->score=i+1;         p2=(struct student*)malloc(sizeof(struct student));         p1->next=p2;         p1=p2;     }     p1->next=NULL;     return head; };  void print(struct student *head,int n) {     struct student *p1;     p1=head;     while (p1->next->next!=NULL)     {         printf("%d ",p1->score);         p1=p1->next;     }     printf("%d\n",p1->score); }  int main() {     int N;     struct student *head;     head=struct student *creat(N);     scanf("%d",&N);     struct student * creat(N);     print(head,N);     return 0; } ||=== Build: Debug in 约瑟夫问题 (compiler: GNU GCC Compiler) ===| D:\codeblocks --project\约瑟夫问题\main.c||In function 'main':| D:\codeblocks --project\约瑟夫问题\main.c|44|error: expected expression before 'struct'| D:\codeblocks --project\约瑟夫问题\main.c|46|warning: parameter names (without types) in function declaration [enabled by default]| ||=== Build failed: 1 error(s), 1 warning(s) (0 minute(s), 0 second(s)) ===|   改了之后只有1 error 1 warning了，但是还是有个error啊？怎么办啊

user: user-3
content: struct student *creat(int n)返回student指针，但是你的head是int型。
user-0 提问: struct {。。。}__PACKED__中的__PACKED__作用是什么？

回复:
user: user-1
content: VS IDE中，在不明白的符号上点鼠标右键，选转到定义。

user: user-2
content: __PACKED__应该是把所有变量在内存中的存储变得连续起来，不会出现因为自动对齐造成某些字节或者位成为空的

user: user-0
content: 猜想__PACKED__应该是不采用默认对齐

user: user-3
content: 看编译器： 1.如果是编译器的属性，那么就是告诉编译器的参数 2.是个结构体变量。前后下划线说明是“内部”变量，防止和用户定义变量ID冲突。 个人觉得是第2种情况。

user: user-0
content: 楼上的代码可以编译通过的，这个 可以验证。（在linux下）

user: user-0
content: struct _RTP_FIXED_HEADER {     /**//* byte 0 */     unsigned char csrc_len:4;        /**//* expect 0 */     unsigned char extension:1;        /**//* expect 1, see RTP_OP below */     unsigned char padding:1;        /**//* expect 0 */     unsigned char version:2;        /**//* expect 2 */     /**//* byte 1 */     unsigned char payload:7;        /**//* RTP_PAYLOAD_RTSP */     unsigned char marker:1;        /**//* expect 1 */     /**//* bytes 2, 3 */     unsigned short seq_no;                 /**//* bytes 4-7 */     unsigned  long timestamp;             /**//* bytes 8-11 */     unsigned long ssrc;            /**//* stream number is used here. */ } __PACKED__;  typedef struct _RTP_FIXED_HEADER RTP_FIXED_HEADER;  struct _NALU_HEADER {     //byte 0 	unsigned char TYPE:5;     	unsigned char NRI:2; 	unsigned char F:1;     	 }__PACKED__; /**//* 1 BYTES */  typedef struct _NALU_HEADER NALU_HEADER;

user: user-4
content: 定义了一个结构体叫_RTP_FIXED_HEADER，声明了一个结构体变量叫__PACKED__
user-0 提问: c语言问题

回复:
user: user-1
content: d可以理解为一个长度为4的char类型数组，"abcd"则是存储在静态常量区，其实加上结尾的'\0'一个占用了五个字符，但是d只有四个字节的存储空间，所以就没有存储'\0'，你调用strlen函数，会一直在d后面的栈存储空间上寻找'\0'直至找到，可能你d后面的内存在第7个恰好是一个'\0'，所以得到的长度为7.因此操作C风格字符串的时候一定要小心。

user: user-2
content: 引用 7 楼 u012436960 的回复:四个数组在内存中的分布为： abcd abc\0 ab\0? a\0?? 其中?表示任意字符。 因为数组是被压栈进入内存的，所以先定义的数组在后，后定义的在前，因为最后一个字符串实际包含5个字符(包括最后的\0),而定义的数组容量是4，所以最后的\0会被丢弃。strlen是判断以\0结尾的字符串的长度的，它认为d="abcdabc",所以d的长度为7。错误太多了  动不动初始化啊 初始化之后没指定的元素会初始化为 0  根本不存在你所谓的 ? 压栈 和 变量在内存的顺序没有一分钱关系 别张冠李戴 变量在内存中的顺序 编译器不一定按照声明的顺序一一分配  可以是 abcd 可以是cadb 一样是压栈 按照abcd 和 按照 cadb 结果是不一样的  没什么意义

user: user-2
content: 引用 2 楼 fly_dragon_fly 的回复:你的编译器有问题，最后一个d明显越界没有提示吗，换编译器 d 没有越界 这样初始化是 完全没问题的  需要注意的是 初始化得到的d 不是字符串 不能用字符串函数操作

user: user-0
content: 编译器没有提示

user: user-3
content: 理解和讨论之前请先学会如何观察！  计算机组成原理→DOS命令→汇编语言→C语言（不包括C++）、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言（包括C++）、架构……  对学习编程者的忠告： 多用小脑和手，少用大脑、眼睛和嘴，会更快地学会编程！ 眼过千遍不如手过一遍！ 书看千行不如手敲一行！ 手敲千行不如单步一行！ 单步源代码千行不如单步Debug版对应汇编一行！ 单步Debug版对应汇编千行不如单步Release版对应汇编一行！  VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化，这样过一遍不就啥都明白了吗。 对VC来说，所谓‘调试时’就是编译连接通过以后，按F10或F11键单步执行一步以后的时候，或者在某行按F9设了断点后按F5执行停在该断点处的时候。 （Turbo C或Borland C用Turbo Debugger调试,Linux或Unix下用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。）  不要迷信书、考题、老师、回帖； 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实！  有人说一套做一套，你相信他说的还是相信他做的？ 其实严格来说这个世界上古往今来所有人都是说一套做一套，不是吗？  不要写连自己也预测不了结果的代码！

user: user-4
content: 四个数组在内存中的分布为： abcd abc\0 ab\0? a\0?? 其中?表示任意字符。 因为数组是被压栈进入内存的，所以先定义的数组在后，后定义的在前，因为最后一个字符串实际包含5个字符(包括最后的\0),而定义的数组容量是4，所以最后的\0会被丢弃。strlen是判断以\0结尾的字符串的长度的，它认为d="abcdabc",所以d的长度为7。

user: user-5
content: char d[4] = "abcd"; 这个已经越界了，编译器没提示么？

user: user-6
content: 应该没有越界，只是数组d只有4个字符空间，所以d只包含a、b、c、d四个字符，没有包含字符串结束符\0，而strlen计算字符串长度是以\0为结束符，所以strlen(d)会输出一个大于4的值，输出多少要看strlen计算d的长度时遍历到\0为止。

user: user-7
content: char d[4] = "abcd";

user: user-8
content: char d[4] = "abcd";   下标越界了， 字符串的结尾后面自动会加‘\0’， 会用掉一个字符的空间， 这里你有了4个字符， 没空间在加'\0'， strlen（）函数遇到'\0'才认为字符串结束。  程序中应尽量避免这种情况出现。

user: user-9
content: 你的编译器有问题，最后一个d明显越界没有提示吗，换编译器

user: user-10
content: 数组越界了吧
user-0 提问: 关于FIFO的设置深度的困惑

回复:
user: user-0
content: 引用 1 楼 my_live_123 的回复:FIFO队列的链式实现，不存在覆盖问题 LZ的意思是限制FIFO元素个数？那你设置一个计数器即可，每次入队时对计数器加1，出队时对计数器减1，测试计数器是否超过限制（队空或者队满）  计数很好，满足了，感谢你的支持。

user: user-1
content: 你要实现的是一个 环形 队列吧

user: user-2
content: FIFO队列的链式实现，不存在覆盖问题 LZ的意思是限制FIFO元素个数？那你设置一个计数器即可，每次入队时对计数器加1，出队时对计数器减1，测试计数器是否超过限制（队空或者队满）
user-0 提问: 怎么获取某条直线中间的几个点的坐标.

回复:
user: user-1
content: 赵老师  您太牛了！！！

user: user-2
content: 引用 8 楼 zhao4zhong1 的回复:(X0,Y0)-(X1,Y1),t=0.2,0.4,0.6,0.8 Xt=X0*t+X1*(1-t) Yt=Y0*t+Y1*(1-t) 正解！

user: user-3
content: 先把二元一次多项式列出来，比较笨的办法就是 for{for()}这样搞就行了。

user: user-4
content: 引用 4 楼 hyz_cs 的回复:[quote=引用 2 楼 q3733353520 的回复:]  //l^2 =   (y2-y1)^2 +  (x2-x1)^2 算出l（两点间的距离） //然后根据中间点数等分 //最后依次求出点的坐标   是这个办法,但是我现在距离求出来了,中间点等分也简单,但是怎么依次求坐标?[/quote]  你没学过几何吗

user: user-2
content: (X0,Y0)-(X1,Y1),t=0.2,0.4,0.6,0.8 Xt=X0*t+X1*(1-t) Yt=Y0*t+Y1*(1-t)

user: user-5
content: 点的线性插值 如果已知 点A，B， 中间点的公式为 A(1-t)+Bt 其中t为比例

user: user-6
content: x1=x0+d *cos(a) y1=y0+d*sin(a)

user: user-0
content: 引用 2 楼 q3733353520 的回复: //l^2 =   (y2-y1)^2 +  (x2-x1)^2 算出l（两点间的距离） //然后根据中间点数等分 //最后依次求出点的坐标   是这个办法,但是我现在距离求出来了,中间点等分也简单,但是怎么依次求坐标?

user: user-7
content: 初中时几何老师口口相授：平面之上，两点确定一线。 直线方程： 1：一般式:Ax+By+C=0(A、B不同时为0)【适用于所有直线】 k= - A/B ， b= - C/B A1/A2=B1/B2≠C1/C2←→两直线平行 A1/A2=B1/B2=C1/C2←→两直线重合 横截距a=-C/A 纵截距b=-C/B 2：点斜式:y-y0=k(x-x0) 【适用于不垂直于x轴的直线】 表示斜率为k，且过（x0,y0）的直线 3：截距式:x/a+y/b=1【适用于不过原点或不垂直于x轴、y轴的直线】 表示与x轴、y轴相交，且x轴截距为a，y轴截距为b的直线 4：斜截式:y=kx+b【适用于不垂直于x轴的直线】 表示斜率为k且y轴截距为b的直线 5：两点式:【适用于不垂直于x轴、y轴的直线】 表示过（x1,y1）和(x2,y2)的直线 (y-y1)/(y2-y1)=(x-x1)/(x2-x1) (x1≠x2，y1≠y2) 6：交点式:f1(x,y) *m+f2(x,y)=0 【适用于任何直线】 表示过直线f1(x,y)=0与直线f2(x,y)=0的交点的直线 7：点平式:f(x,y) -f(x0,y0)=0【适用于任何直线】 表示过点（x0,y0）且与直线f（x,y）=0平行的直线 8：法线式：x·cosα+ysinα-p=0【适用于不平行于坐标轴的直线】 过原点向直线做一条的垂线段，该垂线段所在直线的倾斜角为α，p是该线段的长度 9：点向式：(x-x0)/u=(y-y0)/v (u≠0,v≠0)【适用于任何直线】 表示过点(x0,y0)且方向向量为（u,v ）的直线 10：法向式：a（x-x0）+b（y-y0）=0【适用于任何直线】 表示过点（x0，y0）且与向量（a，b）垂直的直线

user: user-4
content: //l^2 =   (y2-y1)^2 +  (x2-x1)^2 算出l（两点间的距离） //然后根据中间点数等分 //最后依次求出点的坐标

user: user-8
content: 直线方程啊 y=kx+b
user-0 提问: 一次面试题目，求解答

回复:
user: user-1
content: 3.cpu的使用率一般是看最低优先级的idle任务占用cpu的时间，而cpu100%，说明idle任务一直未被调用。此时需要对当前占有处理器资源的线程，主动睡眠 taskdelay.等。主动睡眠，放弃cpu资源。

user: user-2
content: 关于修改ip地址，我可以简略说一下也不知道对不对，首先你要捕获ip数据包，这个是有相应的库的叫libpcap，Windows有更强大的winpcap。捕获ip数据包后就可以对其做相应的操作了，比如修改ip地址，建议你去看看《网络开发包安全详解》

user: user-3
content: 有难度，不会呀

user: user-4
content: 1.分两种情况！ a.返回接口传入时的指针参数或者引用对象的地址。一般是对传进来的指针指向对象操作后原指针参数返回。如果操作失败返回NULL b.在函数分配对象，返回对象的地址。分配失败，返回NULL。  2.没看懂 3.a.root权限更改进程的优先级！如果不好使，b.系统调用setrlimit，设置进程的RLIMIT_CPU限制,个人觉得a就好使。优先级发生变化，时间片跟着调整 4.既然是非阻塞方式了，返回此标示指示资源未到位，1.轮询。sleep片刻，再试一试2.select或者poll 5.不会！ 6.指定目标文件名，自己就会找了！默认就是在当前目录搜索，你也可以指定搜索目录，设置VPATH= . <-注意这里是个点点

user: user-5
content: 都不会，我是不是太菜了

user: user-6
content: 一份好的笔试题应该是把面试者的真实实力筛选成不同等级的。  面试的时候多个心眼 有的面试官是在刷荣誉感，这种人日后做同事还不如换家公司。  有时候面试官会突然问一两个刁难性问题，可能是考验你的心理素质，尽量扩展性把自己会的以及思路说出来，知之为知之，不知为不知。 这种情况有的面试者严重点会恼羞成怒，八成影响分就扣光了。。

user: user-6
content: 这题目确实出的不清晰，有可能出题的也是个半桶水。或者更多的想考察面试者的应变吧。  1.封装一个接口，返回一个指针，应完成哪些操作。 这题八成想考内存管理。 2.#define MAX 256，定义结构struct  stNode{ unsigned long lu，char LINE[MAX]}，对一个结构数字，快速查找到lu TOP10的结构数据。 用lu做map的key。题目又没说具体有多少数据，有多少空间可以用。 3.CPU独占时有时占用率会达到100%，如何降低CPU使用率。（与时间片有关） 想问抢占式系统还是多线程 4.非阻塞式socket经常返回EAGIAN错误，应该如何解决。 一般不用管，continue，具体看man手册 5.如何自己修改数据包的IP地址。 修改协议栈啊，或者rawsocket，总之就是根据更底层的的API写代码。 6.Makefile中如何查找当前目录下的C文件。 通配。。

user: user-7
content: 好几个都是描述不清楚的 1.封装一个接口，返回一个指针，应完成哪些操作。   问得好像有固定步骤似的 2.看不懂 3.CPU独占时有时占用率会达到100%  我可以回答换一台电脑吗?  456太具体问题了, 没接触过根本不会懂. 如果你面试的是特定方向的可以理解. 要不然可以回答, "百度一下, 我才知道"

user: user-8
content: 1. 返回的指针是从哪里来的，如果是动态申请内存的话，在哪里申请，就在哪里释放；或者申请内存的操作可以从外部定制 2. 题目没看懂 3. 不会 4. IO多路复用 5. 不会（IP地址是在IP层包头部中有源地址和目的地址，但不知道怎么改，从来没做过） 6. SRC := $(wildcard *.c)

user: user-9
content: 谁家的面试题啊，有点难。 第一个应该涉及内存的分配与回收，和指针指向的数据结构。
user-0 提问: linux 下要做一个有几十万客户端连接的服务器？？？问一下怎么实现

回复:
user: user-1
content: 搜“epoll”

user: user-2
content: 用epoll没有错，达到5w的并发连接已经很强了，差不多达到一台万兆网卡的机器性能极限了。要想达到几十万的并发连接的话，只能加机器来做负载均衡了。 你可以参考haproxy和nginx的实现。 下面的是haproxy的一些介绍： http://freeloda.blog.51cto.com/2033581/1294094