Mxode/CSDN-C_Language-2013_2023 huggingface dataset:
user-0 提问: 【新人求助帖】关于Linux C的链表问题

回复:
user: user-1
content: 引用 3 楼 hsshuai4 的回复:[quote=引用 2 楼 q3733353520 的回复:] [quote=引用 1 楼 q3733353520 的回复:] 首先，链表实质上就是一个个的结构体对象连接在一起形成的 如果是单向链表的话，结构体中有： next指针， data  而data中就是存储的你说的数据  显然，你打印的这些信息都是存储在其中，所以无论是清空，还是什么操作都是对结构体对象data的操作  结构体对象中data成员的操作[/quote] 那我要怎么去清空这些data上的信息呢？[/quote]  那要看你data是什么数据类型，还有他实际上是怎么存储的，代码中肯定有

user: user-2
content: 引用 3 楼 hsshuai4 的回复:[quote=引用 2 楼 q3733353520 的回复:] [quote=引用 1 楼 q3733353520 的回复:] 首先，链表实质上就是一个个的结构体对象连接在一起形成的 如果是单向链表的话，结构体中有： next指针， data  而data中就是存储的你说的数据  显然，你打印的这些信息都是存储在其中，所以无论是清空，还是什么操作都是对结构体对象data的操作  结构体对象中data成员的操作[/quote] 那我要怎么去清空这些data上的信息呢？[/quote] 这还不简单么？比如char data[100]; memset(data, 0, 100);

user: user-3
content: system("dir /b /a-d c:\\*.* >d:\\allfiles.txt"); //读文件d:\\allfiles.txt的内容即C:\\下所有文件的名字 system("dir /b /a-d /s c:\\*.* >d:\\allfilesinsub.txt"); //读文件d:\\allfilesinsub.txt的内容即C:\\下所有文件的名字包含子目录 system("dir /b /ad  c:\\*.* >d:\\alldirs.txt"); //读文件d:\\alldirs.txt的内容即C:\\下所有子目录的名字 请记住，能用shell命令获取文件、文件夹信息或者操作文件、文件夹最好用shell命令获取或者操作，而不要用各种API获取或者操作，因为当遇到非法文件夹名或非法文件名或非法文件长度、非法文件日期、压缩文件、链接文件、稀疏文件……等各种意料之外的情况时，API会处理的不全面或陷入死循环，而shell命令不会。  Linux下用ls命令

user: user-4
content: chdir->opendir->readdir->printf->colsedir 完全用不到什么链表，这几个函数就够了  清除链表要看你链表的具体定义，如果链表中没有分配堆空间，直接=NULL，如果是意向链表，遍历链表释放空间，赋值为NULL

user: user-5
content: 估计你的老师的意思是让你使用:在程序中使用fork,exec,find，ls实现一个最简单的bash

user: user-1
content: 引用 1 楼 q3733353520 的回复:首先，链表实质上就是一个个的结构体对象连接在一起形成的 如果是单向链表的话，结构体中有： next指针， data  而data中就是存储的你说的数据  显然，你打印的这些信息都是存储在其中，所以无论是清空，还是什么操作都是对结构体对象data的操作  结构体对象中data成员的操作

user: user-1
content: 首先，链表实质上就是一个个的结构体对象连接在一起形成的 如果是单向链表的话，结构体中有： next指针， data  而data中就是存储的你说的数据  显然，你打印的这些信息都是存储在其中，所以无论是清空，还是什么操作都是对结构体对象data的操作

user: user-0
content: 引用 2 楼 q3733353520 的回复:[quote=引用 1 楼 q3733353520 的回复:] 首先，链表实质上就是一个个的结构体对象连接在一起形成的 如果是单向链表的话，结构体中有： next指针， data  而data中就是存储的你说的数据  显然，你打印的这些信息都是存储在其中，所以无论是清空，还是什么操作都是对结构体对象data的操作  结构体对象中data成员的操作[/quote] 那我要怎么去清空这些data上的信息呢？
user-0 提问: 能把一个指针数组转化为普通数组吗？

回复:
user: user-1
content: 引用 2 楼 zhangqilussg 的回复:[quote=引用 1 楼 starytx 的回复:] 数组作为形参的话就退化成指针了，写成指针形式就可以了，再加一个数组长度参数就可以  我的递归函数是这样定义的 void qsort(int a[], int p, int r){} 调用它的时候是这样的 qsort(*a, 0, 9);  但是一运行就崩溃掉了，可能是指针的问题，那具体应该怎么改呢？[/quote]  首先 你要知道是哪里 崩溃的 是什么原因 （用printf各种打印 肯定能找到）

user: user-0
content: 引用 1 楼 starytx 的回复:数组作为形参的话就退化成指针了，写成指针形式就可以了，再加一个数组长度参数就可以  我的递归函数是这样定义的 void qsort(int a[], int p, int r){} 调用它的时候是这样的 qsort(*a, 0, 9);  但是一运行就崩溃掉了，可能是指针的问题，那具体应该怎么改呢？

user: user-2
content: 数组作为形参的话就退化成指针了，写成指针形式就可以了，再加一个数组长度参数就可以

user: user-2
content: 引用 2 楼 zhangqilussg 的回复:我的递归函数是这样定义的 void qsort(int a[], int p, int r){} 调用它的时候是这样的 qsort(*a, 0, 9);  但是一运行就崩溃掉了，可能是指针的问题，那具体应该怎么改呢？你这函数名起的和系统函数qsort一样啊。不太好。这里不是名字的问题。调用的话第一个参数就传int数组名就行了

user: user-3
content: 本来就是普通数组，没有你所谓的指针数组， 声明为void qsort(int *a, int p, int r), 调用qsort(a, 0, 9)就可以了
user-0 提问: 结构体指针链表，编译报错，求指导！！

回复:
user: user-0
content: 补充问题：这个问题不是编译报错，而是运行了中出错，本人是新学编程的，还不是很会使用Debug去检查出错位置，求各路大神给指点下那里出错了的。谢谢！
user-0 提问: 随机快速排序的问题，请问是哪里的错误？

回复:
user: user-0
content: 引用 1 楼 user-1 的回复:宏定义错了，需要给表达式加括号保证求值顺序。  #define random(x) (rand()%(x))  ps. 尽量不要用宏，比如这里可以用 inline 函数。  是这样，问题已解决，太感谢了！

user: user-1
content: 宏定义错了，需要给表达式加括号保证求值顺序。  #define random(x) (rand()%(x))  ps. 尽量不要用宏，比如这里可以用 inline 函数。
user-0 提问: 文件流读取txt文件，10w个数据可以读，100w个数据就崩溃掉了

回复:
user: user-0
content: 引用 1 楼 user-1007 的回复:是不是把数组放在函数里边声明了，这样可能会暴栈，试试放在全局声明。  是这样，已经解决了，多谢！

user: user-1
content: 是不是把数组放在函数里边声明了，这样可能会暴栈，试试放在全局声明。
user-0 提问: 怎么不用for循环在LCD点阵屏上显示汉字

回复:
user: user-0
content: 引用 6 楼 u011337306 的回复: 多谢你的解答，分全都给你了

user: user-1
content: bin文件的字库，就是将文字的信息全部存储在一起，然后通过GB2312或者unicode索引bin文件，直接将对应的汉字显示出来

user: user-2
content: 空间换取时间 空  间 空间换取时间

user: user-3
content: 这个要看你用什么芯片了，有一些芯片支持dma2d，可以直接这样做，很快的。

user: user-0
content: 引用 4 楼 u011337306 的回复:[quote=引用 3 楼 liaocao2010 的回复:] [quote=引用 2 楼 u011337306 的回复:] 自己整一个字库，可以快速加载 但是无论是汉字还是ASCII的字库每个元素都是表示给像素填不填色的含义，而我往DMA里面填入的数据都是颜色值，现在图片取模后的每个元素都是代表颜色值，所以图片能直接显示，汉字要是不用for循环的话怎么显示呢[/quote] 自己整一个字库，通过位操作来实现，速度很快的！[/quote] 我之前的就是位操作啊，是用每一位跟OX80比较之后，再移位么 这样还是不够快，对了，bin文件的字库是怎么回事啊

user: user-1
content: 引用 3 楼 liaocao2010 的回复:[quote=引用 2 楼 u011337306 的回复:] 自己整一个字库，可以快速加载 但是无论是汉字还是ASCII的字库每个元素都是表示给像素填不填色的含义，而我往DMA里面填入的数据都是颜色值，现在图片取模后的每个元素都是代表颜色值，所以图片能直接显示，汉字要是不用for循环的话怎么显示呢[/quote] 自己整一个字库，通过位操作来实现，速度很快的！

user: user-0
content: 引用 2 楼 u011337306 的回复:自己整一个字库，可以快速加载 但是无论是汉字还是ASCII的字库每个元素都是表示给像素填不填色的含义，而我往DMA里面填入的数据都是颜色值，现在图片取模后的每个元素都是代表颜色值，所以图片能直接显示，汉字要是不用for循环的话怎么显示呢

user: user-1
content: 自己整一个字库，可以快速加载

user: user-0
content: 因为今天休息么，论坛好冷淡！
user-0 提问: 这里del函数输入0后老是会有运行错误

回复:
user: user-0
content: 问题好像在del函数输入0后，但是我都是按照书上写的。。。。。。不知道问题在哪里

user: user-0
content: 这后面也显示不出表链内的所有数据和编号，只能正确的显示数量。

user: user-0
content: 上面的图是浮点库链接错误的。     这个是删除编号后，再次删除就会出错，编号1后会出现一行没有加入的编号。
user-0 提问: 这问题好郁闷

回复:
user: user-0
content: 嗯，  行了可以运行了，大神你真有一套

user: user-1
content: 没有定义 f_average， 你看看 average_total=f_average(array,3); 这一行是不是 average_total=f_average_total(array,3);

user: user-0
content: 这个程序是执行这个问题的代码哟 编写„个程序，提示用户输入3个数集，每个数集包括5个double值。程序应当实现下列所有功能：      a．把输入信息存储到一个3x5的数组中      b．计算出每个数集（包含5个数值）的平均值     c．计算所有数值的平均数      d．找出这15个数中的最大值．     e．打印出结果      每个任务需要用一个单独的函数来实现（使用传统C处理数组的方法）。对于任务b，需要编写计算并返回一维数组平均值的函数，循环3次调用该函数来实现任务b。对于其他任务，函数应当把整个数组做为参数，并且完成任务c和d的函数应该向它的调用函数返回答案
user-0 提问: 求教linux下C语言怎么访问webservice并调用其中函数下载数据

回复:
user: user-1
content: 先拿到它的url地址，比如：http://www.baidu.com//HttpFileTrans?method=download&BufferSize=65536&FlushSize=65536  然后参考下面的代码试试，直接从工程里面拷贝出来的，肯定编译不通，参考方法就行。实在不行去查查MSDN关于InternetOpen的用法 HANDLE hInternet = NULL; 	HANDLE hConnect = NULL; 	HANDLE hRequest = NULL;  	hInternet = InternetOpen("ZyHttpGetAgent",INTERNET_OPEN_TYPE_PRECONFIG,NULL,0,0); 			if (hInternet){ //打开Intenet成功 				hConnect = InternetConnect(hInternet,host,port,0,0,INTERNET_SERVICE_HTTP,0,0); 				if (hConnect) //连接成功 				{ 					hRequest = HttpOpenRequest(hConnect,"GET",url,NULL,NULL,NULL,INTERNET_FLAG_DONT_CACHE,0); 					if (hRequest){ //打开请求成功		 						if (HttpSendRequest(hRequest, NULL, 0, NULL, 0)){ //发送请求成功 							if (HttpQueryInfo(hRequest, HTTP_QUERY_RAW_HEADERS_CRLF, buf, &dwBytesRead,0)){ //查询头信息 								if (ParseHttpHeader(buf,dwBytesRead,&nFileLength,&pException) && pException == NULL)  //正确找到URL 且 文件也正确找到 								{ 									dwBytesAllRead = 0; 									while (dwBytesAllRead < nFileLength) 									{ 										if (InternetReadFile(hRequest, buf, buffersize, &dwBytesRead)) 										{ 											dwBytesAllRead += dwBytesRead; 											if (!WriteFile(hFile,buf,dwBytesRead,&dwBytesWritten,0) || dwBytesRead != dwBytesWritten) 											{ 												dwBytesAllRead = WriteFileError; 												break; 											} 										} 										else 										{ 											dwBytesAllRead = ReadFileError; 											break; 										} 									} 									 								} 								else 								{ 									if (InternetReadFile(hRequest,buf,buffersize,&dwBytesRead)) 									{ 										buf[dwBytesRead] = 0; 										responsetext.Format("%s",buf); 									} 									else 									{ 										responsetext = "Read Exception From Server Failed"; 									} 								} 								 							} 						} 					} 				} 			} 		}

user: user-2
content: 有几种办法你自己选吧： 1、自己写socket客户端，连接服务器的HTTP端口，构造HTTP请求发过去，服务器会返回你要的数据，自己再解析HTTP响应，难度很大； 2、用libcurl，这个库对HTTP做了很好的封装，调用相关接口就可以，但学习成本也比较大，难度较大； 3、改用python去访问这个人家给你提供的接口，下载后保存到文件，然后用C语言去解析文件，python的几个库像requests、pycurl、urllib、urllib2都可以完成HTTP的请求发送和响应接收，难度较小。 推荐你用办法3或者2吧，1有难度。
user-0 提问: 用access数据库做的怎么查询一段时间的销售收入

回复:
user: user-1
content: SELECT sum(价格 * 数量) as result FROM tablename where 日期 >= #2014/3/2# and 日期 <= #2014/3/5# ;  查询2014年3月2日到2014年3月5日的销售收入
user-0 提问: C语言Scanf输入求解

回复:
user: user-1
content: man scanf

user: user-2
content: 顶楼上  为什么 要在这里问呢？  在搜索引擎中搜索就有答案   比如 百度百科 360百科 。

user: user-3
content: 楼主可以去下载一个帮助文档

user: user-4
content: 2楼说的差不多

user: user-5
content: 试一试，是不是： %d %l %lf %s

user: user-0
content: 是不是答案都是同样的 scanf（“%d”，&i）； ？ 貌似我被骗了
user-0 提问: 模拟操作系统对内存与虚拟内存的页面置换算法

回复:
user: user-1
content: 这是我写的，和你的需求差不多，你稍微改动一些应该就行了http://download.csdn.net/detail/qq_27856623/9697729

user: user-2
content: 给你一些提示: 最简单的: 先申请一些内存,然后根据算法动态设计匹配,然后打印.

user: user-3
content: 找人做作业是要付费的

user: user-4
content: 参考Linux源代码中相关片断。
user-0 提问: 死循环问题

回复:
user: user-1
content: int main(int n)  你这是几个意思》？？ 在main函数内定义int n，把int main(int n)写成int main()就行了

user: user-2
content: 你用的什么编译器？我运行了一下你的代码，可以输出max。。。

user: user-2
content: 引用 2 楼 user-3 的回复:规范的写法如下,试试看.  int main (int argc , char* argv[]) //把你的int main(int n)替换成这个 {     int n;  //增加这个声明 }  我运行了一下他的代码，可以输出max。

user: user-3
content: 规范的写法如下,试试看.  int main (int argc , char* argv[]) //把你的int main(int n)替换成这个 {     int n;  //增加这个声明 }
user-0 提问: 为什么这个程序不能运行

回复:
user: user-1
content: 引用 3 楼 jack_guanggong 的回复:scanf("%c",a[i]); 改为 scanf("%c",&a[i]); +1

user: user-2
content: scanf("%c",a[i]); 改为 scanf("%c",&a[i]);

user: user-0
content: 还是不能运行的

user: user-3
content: 内存越界了, a数组大小为20, 你用它装了100个数(i<100)  . #include <stdio.h>  int main (int argc,char *argv[])  {  int i,j=0,k=0,n=0,m=0;  char a[20];   //改成: char a[100];  printf("请输入选票结果：\n");  for (i=0;i<100;i++)  {  scanf("%c",a[i]);   }  for (i=0;i<100;i++)  {    if (a[i]=='A')  {  n++;  }  else if (a[i]=='B')  {  j++;  }  else if (a[i]=='C')  {  k++;  }  else  if(a[i]=='D')  {  m++;  }  }  printf("统计结果为：\n");  printf("A候选人得票为:%d\n",n);  printf("B候选人得票为:%d\n",j);  printf("C候选人得票为:%d\n",k);  printf("D候选人得票为:%d\n",m);  }
user-0 提问: C语言新手，棋盘上的麦粒问题

回复:
user: user-0
content: 哦，原来这样啊，谢谢啦

user: user-1
content: while(i<=n) a=pow(2,i-1); sum=sum+a; i++;  while(i<=n) {//大括号 a=pow(2,i-1); sum=sum+a; i++; }{//大括号
user-0 提问: C新手，，能帮我解释下b2怎么会是7而不是6

回复:
user: user-1
content: 一步一步调试就看明白B是多少了

user: user-2
content: printf()大法，将程序运行过程中所有的变了全部打印出来。

user: user-3
content: # include <stdio.h>  int main(void) { int a=5, b=5, c=4;  a||(b=a+c)&&c;  printf("\na||()b=a+c&&c=%d",a||(b=a+c)&&c); printf("\na1=%d,b1=%d,c1=%d",a,b,c);         a&&(b=b+1)||(c=b+1);//这个运算完后b=6  printf("\na&&(b=b+1)||(c=b+1)=%d",a&&(b=b+1)||(c=b+1));//这里b又加了1，所以输出为7 printf("\na2=%d,b2=%d,c2=%d\n",a,b,c);  return 0; }

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

user: user-5
content: 这个主要是运算规则和顺序的问题。 &&：从左到右看左边是真才检查右边是否为真；如果左边为假就不考虑左边，也就是说右边不管是什么式子，都不会得到执行 .||： 也是从左到右，左边是真就不检查右边；左边为假才检查右边。&&和||在一个式子中，&&的优先级比较高。 所以，a&&(b=b+1)||(c=b+1);只执行到a&&(b=b+1)这一段，而后面又执行这一段一次。因而b加了两次～
user-0 提问: C语言数组输入问题

回复:
user: user-1
content: 在你的程序中，第一个scanf输入了字符串以后，按回车键，此时把一行字符连同换行符一起送入缓冲区，缓冲区检测到有换行符，就把一行字符送入系统内存，送给了x，而换行符'\n'还留在缓冲区里，换行符（line feed)ASCII码是10，你没清除缓冲区，又再用一个getchar时，getchar就会先检查缓冲区，发现里头有个换行符，就把换行符对应的ASCII码赋给了y，于是就有了你发现的问题。 你用debug单步调试，就会发现ch的值是10  需要在getchar前面加上flushall();或fflush(stdin);，就是冲掉了换行符。

user: user-0
content: 引用 1 楼 user-1 的回复:在你的程序中，第一个scanf输入了字符串以后，按回车键，此时把一行字符连同换行符一起送入缓冲区，缓冲区检测到有换行符，就把一行字符送入系统内存，送给了x，而换行符'\n'还留在缓冲区里，换行符（line feed)ASCII码是10，你没清除缓冲区，又再用一个getchar时，getchar就会先检查缓冲区，发现里头有个换行符，就把换行符对应的ASCII码赋给了y，于是就有了你发现的问题。 你用debug单步调试，就会发现ch的值是10  需要在getchar前面加上flushall();或fflush(stdin);，就是冲掉了换行符。 恩，我尝试了下，用了fflush(stdin);感觉可以了。

user: user-0
content: 引用 1 楼 user-1 的回复:在你的程序中，第一个scanf输入了字符串以后，按回车键，此时把一行字符连同换行符一起送入缓冲区，缓冲区检测到有换行符，就把一行字符送入系统内存，送给了x，而换行符'\n'还留在缓冲区里，换行符（line feed)ASCII码是10，你没清除缓冲区，又再用一个getchar时，getchar就会先检查缓冲区，发现里头有个换行符，就把换行符对应的ASCII码赋给了y，于是就有了你发现的问题。 你用debug单步调试，就会发现ch的值是10  需要在getchar前面加上flushall();或fflush(stdin);，就是冲掉了换行符。 哦，那用scanf（“”）%d在%后面加空格也是同样道理吧？你说的那两个怎么用？具体是哪里前面。
user-0 提问: 关于指针的一些疑惑

回复:
user: user-1
content: 不知道你这个代码是自己写的还是复制的，引号乱七八糟，中文引号，反引号。还有，常量字符串是不允许修改的。如果代码真是你写的这样，我很好奇是怎么通过编译的。即使通过，他又是如何执行的。

user: user-2
content: #include <stdio.h>   main()  {  char *s="China  Beijing  2008  Olympic  Games";    char *p;   p=s;   printf(“%s\n”,s): while ((*p)!=“ ”)   p++;  p=‟\0‟;  printf(“%s\n”,s): //printf("%s\n",++p);  }   我想你学校的意思应该是这样的，看看while前后两次printf(“%s\n”,s):的变化

user: user-3
content: 引用#include <stdio.h> void main()  { 	char s[64]="China  Beijing  2008  Olympic  Games";   	char *p;  	p=s;   	while ((*p)!=' ')   p++;  *p='\0';  	printf("%s\n",s); 	printf("%s\n",p);  } 不知道是否是您想要的结果。。

user: user-4
content: #include <stdio.h>   void main()  { 	char *s="China  Beijing  2008  Olympic  Games";   	char *p;  	p=s;   	while ((*p)!=' ')   p++;  p='\0';  	printf("%s\n",s); 	printf("%s\n",p);  }   楼主的程序字符用双引号是错误的 改了之后楼主的程序运行结果见下图：  不知楼主的程序想要什么样的结果？？ 若是 China  Beijing  2008  Olympic  Games  China  二楼的是对的~~

user: user-5
content: while 中，遇到空格，结束。所以p的打印只有，一个china，至于后面赋值，while没有括号，只能管前面一句。

user: user-6
content: 引用 7 楼 zhouchongzxc 的回复:或许学校是想要告诉你 ： 有的时候学校是错的  你要靠的是自己。+1

user: user-7
content: 或许学校是想要告诉你 ： 有的时候学校是错的  你要靠的是自己。

user: user-8
content: 引用 10 楼 mumufan05 的回复:你出来的答案是什么？ 我没有敲，推测结果应该是 China  Beijing  2008  Olympic  Games Beijing  2008  Olympic  Games 不知道是不是你所出来的结果结果应该是这个，但是，楼主的程序。。。真心叫人迷惑！！

user: user-9
content: 你出来的答案是什么？ 我没有敲，推测结果应该是 China  Beijing  2008  Olympic  Games Beijing  2008  Olympic  Games 不知道是不是你所出来的结果

user: user-10
content: p=‟\0‟  改变了指针地址。。。程序在这一句之后，凡是用到指针P的地方，都将崩溃。。。。  应改为 *p='\0'； 但是，由于你前面定义的是  char *s="China  Beijing  2008  Olympic  Games";   char *p; p=s;  可以看到，S是常量，所以你在后面 *p='\0' ，编译器会报错，因为你试图修改常量的值  错误太多了，如果这是学校给的答案，我醉了，如果这是你自己写的答案，根本无法通过编译。。。

user: user-11
content: 这个程序有问题吧  p=‟\0‟; p指针指向新的字符串  打印的时候又是输出++p地址里的东西  改成 p=‟123\0‟ 你会发现输出的是23

user: user-12
content: 很明显，while条件写错了，while((*p) != ' ')

user: user-13
content: 定义指针的时候最好是一起赋值成空指针，这样不容易造成莫名其妙的错误 例如: char *p = NULL;

user: user-14
content: 估计你自己都不知道自己要干嘛。。。 这两个看哪个是你需要的吧，反正不是你写的那样！  #include <stdio.h>   #include <string.h> void main()  { 	char *s = "China  Beijing  2008  Olympic  Games"; 	char *p = new char [strlen(s)+1]; 	strcpy(p,s); 	int i = 0; 	while ((*(s+i)) != ' ') 	{ 		i++; 	} 	p[i] = '\0' ; 	printf("%s \n",s); 	printf("%s \n",p);   	delete [] p; }    #include <stdio.h>   void main()  { 	char s[100] = "China  Beijing  2008  Olympic  Games";   	char *p = s; 	printf("%s \n",s);  	int i = 0; 	while ((*(s+i)) != ' ') 	{ 		i++; 	} 	p[i] = '\0' ; 	printf("%s \n",p);  }

user: user-15
content: while的条件是什么？  遇到空格！
user-0 提问: 求助，输出一个1*4矩阵

回复:
user: user-1
content: 一种思路：把0~15的十进制数转化成4位的二进制数不就遍历所有情况了？ Example 0 -- 0000 ...... 15 -- 1111 其他思路：直接用递推和递归也同样都可以解决问题

user: user-2
content: 就是0x10的值

user: user-3
content: 2的4次方种 排列组合问题

user: user-0
content: 那个好像不行哦

user: user-4
content: http://bbs.csdn.net/topics/390924329
user-0 提问: 一个简单问题：结构体数组变量如何插入到数据库？

回复:
user: user-0
content: 这个问题我终于自己解决了，sprintf函数的第一个参数一定要声明一个字符数组，取数组名才行、

user: user-1
content: 你这根数据库有嘛关系？参数不匹配。

user: user-0
content: 引用 2 楼 user-2 的回复:貌似 v1,v2的格式串也不对哦 那个可以忽略，是我打错了，但是现在的错误还是一样呀  依然是error C2664: 'fprintf' : cannot convert parameter 1 from 'const char *' to 'struct _iobuf *'

user: user-0
content: 谁知道结构体数组变量怎么传值到数据库的，来帮一下

user: user-0
content: fprintf(i_query, "INSERT INTO stock_data values(%.2f,%.2f,%.2f)",v1,v2,v3); 这样写会报错，用sprintf也不对啊，一样报错

user: user-2
content: 貌似 v1,v2的格式串也不对哦

user: user-2
content: fprintf(i_query, "INSERT INTO stock_data values(''%s','%s',%.2f)",v1,v2,v3); ===> sprintf(i_query, "INSERT INTO stock_data values(''%s','%s',%.2f)",v1,v2,v3);
user-0 提问: 0x579DD6AC (msvcr120d.dll) (Project6.exe 中)处有未经处理的异常

回复:
user: user-1
content: 补充下，我是使用opencv库时出现的错误。

user: user-1
content: 我也出现这个错误了，将release模式改为debug模式，成功运行了。但是debug和release我都改过了，各种库都已经配置过了，以前好好的，突然出问题了，就出在读图片那句话。

user: user-2
content: 引用 5 楼 krrmjssf 的回复:已经完美解决了，谢谢大家~ 所以到底咋个解决啊。

user: user-3
content: 请问是怎么解决的@krrmjssf

user: user-4
content: 怎么解决的？我也遇到

user: user-5
content: 怎么解决的，我也遇到了

user: user-6
content: 已经完美解决了，谢谢大家~

user: user-6
content: 同，使用Opencv库的时候出现了这个错误，现在还未解决，有人说一下吗？

user: user-7
content: 不发答案说个毛线啊。。。。

user: user-8
content: 请问最后是怎么解决的？

user: user-9
content: 我也是这个问题，请问LZ是怎么解决的
user-0 提问: c语言算法题目

回复:
user: user-1
content: 引用 7 楼 ilikehigame 的回复:[quote=引用 6 楼 jbsb007sb3 的回复:] 麻烦帮忙看下如何高效查询ooxooxo字符串，还有往后移动查找呢？谢谢 应该是找OOX *******XO字符串吧？ 应该是从前往后找OOX找到第一个（x）后从后往前找XO（XO后只能跟X）位置a，如果找到了统计+1. 然后在往前找XO，找到后记住位置b，从b到a寻找ooX如果有统计+1；从b到X前找oox（c），从c往后找xo有了统计+1. 一次类推！ 类似于快速排序算法！！[/quote] 补充以下：你可以按照字符串的大小来查找ooX和XO 寻找彼OOX和XO大的字符串满足条件 不如OOXX、OOXO、XOX、等都满足 而OOO，XOO都不满足

user: user-1
content: 引用 6 楼 jbsb007sb3 的回复:麻烦帮忙看下如何高效查询ooxooxo字符串，还有往后移动查找呢？谢谢 应该是找OOX *******XO字符串吧？ 应该是从前往后找OOX找到第一个（x）后从后往前找XO（XO后只能跟X）位置a，如果找到了统计+1. 然后在往前找XO，找到后记住位置b，从b到a寻找ooX如果有统计+1；从b到X前找oox（c），从c往后找xo有了统计+1. 一次类推！ 类似于快速排序算法！！

user: user-0
content: 引用 8 楼 ilikehigame 的回复:[quote=引用 7 楼 ilikehigame 的回复:] [quote=引用 6 楼 jbsb007sb3 的回复:] 麻烦帮忙看下如何高效查询ooxooxo字符串，还有往后移动查找呢？谢谢 应该是找OOX *******XO字符串吧？ 应该是从前往后找OOX找到第一个（x）后从后往前找XO（XO后只能跟X）位置a，如果找到了统计+1. 然后在往前找XO，找到后记住位置b，从b到a寻找ooX如果有统计+1；从b到X前找oox（c），从c往后找xo有了统计+1. 一次类推！ 类似于快速排序算法！！[/quote] 补充以下：你可以按照字符串的大小来查找ooX和XO 寻找彼OOX和XO大的字符串满足条件 不如OOXX、OOXO、XOX、等都满足 而OOO，XOO都不满足[/quote]  不是这个意思，O的个数是固定的，X可以是大于等于1的任意个。是查找包含这种OOX..XOOX..XO 这个字符串的个数

user: user-0
content: 麻烦帮忙看下如何高效查询ooxooxo字符串，还有往后移动查找呢？谢谢

user: user-0
content: 大概写了下，如果要判断每次移动多少还略复杂，如果每次只移动一位就觉得太浪费了，没有技术含量，大侠能大概描述下具体的方法吗？

user: user-0
content: 关键就是如何能快速匹配ooxooxo？因为这个字符串本身只有2个字母，相似度极高，怎么计算下一次移动的位置能最大的向后移动呢？

user: user-2
content: 引用 2 楼 user-3 的回复:[quote=引用 1 楼 user-3 的回复:] 你的意思是匹配下面的正则表达式吗？ ox[ox]*xoox[ox]*xo 看错了，应该是这个，ox[x]*oox[x]*oo，方法很简单啊，先过滤一遍把所有重复的x全部剔除（只保留一个x），然后在新字符串上循环匹配oxooxo就行了。如果程序对内存要求高的话，不过滤也可以做的，只是稍微复杂一点罢了。[/quote]+1,赞一个

user: user-3
content: 引用 1 楼 user-3 的回复:你的意思是匹配下面的正则表达式吗？ ox[ox]*xoox[ox]*xo 看错了，应该是这个，ox[x]*oox[x]*oo，方法很简单啊，先过滤一遍把所有重复的x全部剔除（只保留一个x），然后在新字符串上循环匹配oxooxo就行了。如果程序对内存要求高的话，不过滤也可以做的，只是稍微复杂一点罢了。

user: user-3
content: 你的意思是匹配下面的正则表达式吗？ ox[ox]*xoox[ox]*xo
user-0 提问: C语言一个简单的小题，大神求解答

回复:
user: user-1
content: #include <string.h> #include <stdio.h> char a[100] = {0}; int l; void re(char *p); int main() {     int i;     gets(a);     l=strlen(a);     re(a);     puts(a);     return 0; } void re(char* p) {     int i; 	char a1[25] = {0}; 	char a2[25] = {0}; 	char a3[25] = {0}; 	char a4[25] = {0};     int q1=0,q2=0,q3=0,q4=0; 	char* tempP = p; 	if(p) 	{ 		for(int i=0; *p != '\0'; ++i) 		{ 			if(*p>='0'&&*p<='9')//数字  			{ 				a1[q1]=*p++; 				q1++; 			} 			else if(*p>='a'&&*p<='z')//小写字母 			{ 				a2[q2]=*p++; 				q2++; 			} 			else if(*p>='A'&&*p<='Z')//大写字母 			{ 				a3[q3]=*p++; 				q3++; 			} 			else //其他字符 			{ 				a4[q4]=*p++; 				q4++; 			} 		} 	}      for(i=0;i<q1;i++)         a[i]=a1[i];     for(i=q1;i<q1+q2;i++)         a[i]=a2[i-q1];     for(i=q1+q2;i<q1+q2+q3;i++)         a[i]=a3[i-q1-q2];     for(i=q1+q2+q3;i<q1+q2+q3+q4;i++)         a[i]=a4[i-q1-q2-q3]; }

user: user-2
content: 可以使用qsort函数吗？不过这个对同类的字符好像会打乱原有次序，仅供参考 int cmp(const void *a ,const void *b) { 	char *pA = (char *)a; 	char *pB = (char *)b; 	if (*pA >= '0' && *pA <= '9') 	{ 		if (*pB >= '0' && *pB <= '9') 		{ 			return 0; 		} 		else 			return -1; 	} 	else if (*pA >= 'a' && *pA <= 'z') 	{ 		if (*pB >= '0' && *pB <= '9') 		{ 			return 1; 		} 		else if (*pB >= 'a' && *pB <= 'z') 		{ 			return 0; 		}  		else 		{ 			return -1; 		} 	}  	if (*pA >= 'A' && *pA <= 'Z') 	{ 		if (*pB >= '0' && *pB <= '9' || *pB >= 'a' && *pB <= 'z') 		{ 			return 1; 		} 		else if (*pB >= 'A' && *pB <= 'Z') 		{ 			return 0; 		} 		else 			return -1; 	} 	else 	{ 		if (*pB < '0' || (*pB > '9' && *pB <'A') || (*pB > 'Z' && *pB < 'a') ||*pB >'z') 		{ 			return 0; 		} 		else 			return 1; 	} } int main() { 	char str[50] = {0}; 	scanf_s("%s" ,str ,50); 	printf("%s\n" ,str); 	qsort(str ,50 ,sizeof(char) ,cmp); 	printf("%s\n" ,str); 	return 0; }  保持原有同类字符顺序的话可以这样，这个问题感觉不用排序还简单。直接开辟同样大小的临时字符数组，循环4次原串，依次取出数字，小写，大写，其他字符，写入临时数组中就行了。如果嫌循环次数太多，可以空间换效率，申请4个数组，循环一次，依次放入对应数组，然后拼接...
user-0 提问: C语言与数据结构的关系

回复:
user: user-1
content: 电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址； 人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……  推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。

user: user-2
content: 数据结构告诉你，如何用数据来表示现实世界的某个关系、数量。至于语言，只是构造的工具，那种语言都可以。  如果把语言比作工具，如钳子、扳手、剪刀等，数据结构就是告诉你如何用这些工具做个盒子、打个眼、造个螺丝等最基本的零件。

user: user-3
content: 楼上是大神~

user: user-1
content: 计算机组成原理→DOS命令→汇编语言→C语言（不包括C++）、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言（包括C++）、架构……  为什么要有数据结构这个东东？ 因为要将现实世界或者抽象理论中的各种数据保存在计算机外存（光盘、硬盘、U盘……）或内存（ROM、RAM、SRAM……）里面的二进制字节数组中。 然后让CPU这个只会执行预先保存好的加减乘除移位条件转移……等机器指令的家伙按照人的意志去处理这些数据。至于具体如何处理就是所谓算法。  对学习编程者的忠告： 多用小脑和手，少用大脑、眼睛和嘴，会更快地学会编程！ 眼过千遍不如手过一遍！ 书看千行不如手敲一行！ 手敲千行不如单步一行！ 单步源代码千行不如单步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-0 提问: C语言的方向之路，请支招

回复:
user: user-1
content: 引用 9 楼 sholber 的回复:[quote=引用 3 楼 zhao4zhong1 的回复:] 计算机组成原理→DOS命令→汇编语言→C语言（不包括C++）、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言（包括C++）、架构…… DOS命令？……我看还是先弄懂磁芯存储器的制造和工作原理。赵老湿大约的确是又醉了。[/quote] 你不知道我本科学的是计算机应用而不是计算机软件吧。

user: user-2
content: 参考一下——http://blog.csdn.net/u012421456/article/details/40681247

user: user-3
content: 引用 3 楼 zhao4zhong1 的回复:计算机组成原理→DOS命令→汇编语言→C语言（不包括C++）、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言（包括C++）、架构…… DOS命令？……我看还是先弄懂磁芯存储器的制造和工作原理。赵老湿大约的确是又醉了。

user: user-4
content: 可以往嵌入式开发方向发展。

user: user-5
content: 看你本科学校是什么，还有你学得怎么样？如果本科学校不好，自己学得也不好，那么可以选择考研，考个985。

user: user-6
content: 还是想好以后干嘛吧，研究生毕业还是要就业的。。

user: user-7
content: C++感觉现在得搞游戏和驱动好些，推荐你去看JAVA，然后转安卓或网站开发。这是我今年找工作的感受。。。。。。。。。。。。

user: user-8
content: 引用 3 楼 zhao4zhong1 的回复:计算机组成原理→DOS命令→汇编语言→C语言（不包括C++）、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言（包括C++）、架构…… 。。。

user: user-1
content: 计算机组成原理→DOS命令→汇编语言→C语言（不包括C++）、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言（包括C++）、架构……

user: user-9
content: 本科是211以上的就别考了。把本事练好

user: user-10
content: 有好的工作职位就先工作。 如果确定能考上清华，北大，上海交大，复旦，中科大，浙大等前十左右一流高校可考研，除此之外的高校不考也罢，当然如果你爹是李刚，随便拿个小硕学历就能去中央，这另说了。
user-0 提问: 初识C语言用GCC编程软件好还是Dev-C++好？两者有没有区别？

回复:
user: user-1
content: 重点放在语言上，编译器挑一个自己喜欢的好用的就行

user: user-2
content: 学好C语言，以后项目要求什么就是什么！！！

user: user-3
content: 推荐code::blocks

user: user-4
content: 那种简单用哪种，初学C语言，重点是放在语言上，不是编译器上。最好用微软的vs，图形化界面方便使用，先把语言学好，不要在学语言时还要学习编译器怎么用

user: user-5
content: GCC.......

user: user-6
content: Dev-C++ 和 Code::Blocks 都是采用 gcc 作为编译器的 IDE

user: user-7
content: 引用 6 楼 zhao4zhong1 的回复:http://www.microsoft.com/visualstudio/chs/downloads#d-2010-express 点开Visual C++ 2010 Express下面的语言选‘简体中文’，再点立即安装  就这样吧，初学者，别花太多时间在选择IDE上，找个世界上最好的IDE直接开始，以后有时间了，再回头去看其他的IDE就可以了，毕竟你要学的不是IDE,而是编程和语言

user: user-8
content: 看看都有些什么意见

user: user-9
content: 入门还是IDE好，当然要精通还是要GCC

user: user-10
content: http://www.microsoft.com/visualstudio/chs/downloads#d-2010-express 点开Visual C++ 2010 Express下面的语言选‘简体中文’，再点立即安装

user: user-11
content: 都用用试试，觉得那个好用就用那个。

user: user-12
content: 用一个就行啊，关键是把C学好。

user: user-13
content: 引用 楼主 lingshi95zz 的回复:刚入手C语言，请教高手是用GCC好还是用Dev-C++编程软件好？在网上看了两部教程视频，一部推荐GCC，另一部是DEV-C++   都不知道是要用哪种编程软件好点，如果选择了Dev-C++的编程软件，那以后是不是就要学习用Dev-C++软件的视频教程？    “Dev-C++” = “GCC” + 其他

user: user-14
content: GCC是编译器套件，DEV-C++是一个小型IDE，两者定位不同没法比啊。再说了，DEV-C++里面自带GCC，第二个包含第一个，好比一个是厨房，一个是别墅。新手建议DEV-C++，毕竟入门还得靠IDE

user: user-15
content: 引用 楼主 lingshi95zz 的回复:刚入手C语言，请教高手是用GCC好还是用Dev-C++编程软件好？在网上看了两部教程视频，一部推荐GCC，另一部是DEV-C++   都不知道是要用哪种编程软件好点，如果选择了Dev-C++的编程软件，那以后是不是就要学习用Dev-C++软件的视频教程？  推荐gcc， 这些东西大同小异，会了其中一个，另一个也能很快上手。
user-0 提问: 输出*型三角形错在哪里了

回复:
user: user-0
content: 引用 3 楼 czdxzy 的回复:1楼正确，可以看下面的错误提示 1>e:\zy\1119\1119\main.cpp(325) : error C2059: 语法错误 : “数字上的错误后缀” 1>e:\zy\1119\1119\main.cpp(325) : error C2146: 语法错误 : 缺少“;”(在标识符“i”的前面)谢谢   我自己翻译出来了 就是不理解什么意思 谢谢解答

user: user-0
content: 引用 2 楼 u013163178 的回复:这都是错误提示啊，不要因为他是英文的就不愿意看他 D:\新建文件夹\Microsoft Visual Studio\MyProjects\qw\qw.cpp(11) : error C2059: syntax error : 'bad suffix on number' D:\新建文件夹\Microsoft Visual Studio\MyProjects\qw\qw.cpp(11) : error C2146: syntax error : missing ';' before identifier 'i' D:\新建文件夹\Microsoft Visual Studio\MyProjects\qw\qw.cpp(11) : error C2146: syntax error : missing ')' before identifier 'k' D:\新建文件夹\Microsoft Visual Studio\MyProjects\qw\qw.cpp(11) : warning C4552: '-' : operator has no effect; expected operator with side-effect D:\新建文件夹\Microsoft Visual Studio\MyProjects\qw\qw.cpp(11) : error C2059: syntax error : ';' D:\新建文件夹\Microsoft Visual Studio\MyProjects\qw\qw.cpp(11) : error C2059: syntax error : ')' D:\新建文件夹\Microsoft Visual Studio\MyProjects\qw\qw.cpp(12) : error C2146: syntax error : missing ';' before identifier 'printf' 也找了 没找到  谢谢教育  新手还请您指教

user: user-0
content: 引用 1 楼 jacky_wang_123 的回复:如果你想乘的话，应该是2*i    ～ 谢谢   我是新手 容易犯这种错误

user: user-1
content: 1楼正确，可以看下面的错误提示 1>e:\zy\1119\1119\main.cpp(325) : error C2059: 语法错误 : “数字上的错误后缀” 1>e:\zy\1119\1119\main.cpp(325) : error C2146: 语法错误 : 缺少“;”(在标识符“i”的前面)

user: user-2
content: 这都是错误提示啊，不要因为他是英文的就不愿意看他 D:\新建文件夹\Microsoft Visual Studio\MyProjects\qw\qw.cpp(11) : error C2059: syntax error : 'bad suffix on number' D:\新建文件夹\Microsoft Visual Studio\MyProjects\qw\qw.cpp(11) : error C2146: syntax error : missing ';' before identifier 'i' D:\新建文件夹\Microsoft Visual Studio\MyProjects\qw\qw.cpp(11) : error C2146: syntax error : missing ')' before identifier 'k' D:\新建文件夹\Microsoft Visual Studio\MyProjects\qw\qw.cpp(11) : warning C4552: '-' : operator has no effect; expected operator with side-effect D:\新建文件夹\Microsoft Visual Studio\MyProjects\qw\qw.cpp(11) : error C2059: syntax error : ';' D:\新建文件夹\Microsoft Visual Studio\MyProjects\qw\qw.cpp(11) : error C2059: syntax error : ')' D:\新建文件夹\Microsoft Visual Studio\MyProjects\qw\qw.cpp(12) : error C2146: syntax error : missing ';' before identifier 'printf'

user: user-3
content: 如果你想乘的话，应该是2*i    ～
user-0 提问: C语言代码写播放器

回复:
user: user-1
content: 先让你们老师给个例子呗

user: user-0
content: 就是用C语言写一个能播放MP3的播放器 我需要的是创建过程和相关的文件调用代码

user: user-2
content: 我以为是要写一个搜狗音乐呢！

user: user-3
content: 适用MCI！自己百度一下。

user: user-4
content: 用MFC的mediapayer 控件
user-0 提问: 急求帮助，银行家算法，急，多谢大神

回复:
user: user-1
content: 你自己都舍不得时间做，别人会舍得时间给你做????

user: user-2
content: 不会没关系，只要会搜索，会改改就行了

user: user-3
content: 网上早就有很多了  非要连半个数据都一样  谁会给你做  http://www.baidu.com/s?word=%E9%93%B6%E8%A1%8C%E5%AE%B6%E7%AE%97%E6%B3%95%E4%BB%A3%E7%A0%81c&tn=sitehao123&ie=utf-8
user-0 提问: c语言程序问题

回复:
user: user-1
content: a=(a--)+3;是不是这条语句执行之后，a才-1；同理：printf语句执行完，才会b-1;所以b是8.

user: user-2
content: 输出函数一次不要搞的这么长。可以分开来弄

user: user-3
content: .参数从右到左依次入栈

user: user-4
content: http://blog.sina.com.cn/s/blog_56e8acf40100kaer.html 以后碰到这种题目，直接撕烂了砸在出题人的脸上吧，因为这会浪费楼主的脑细胞的！
user-0 提问: 多维数组名？

回复:
user: user-1
content: 二维数组名a 等价于&a[0][0]，懂了没？int (*p)[3] ，这是定义一个指针数组

user: user-0
content: 各位： 2楼问题，谁说说呢？

user: user-2
content: 一维数组名是指向其第一个元素的指针？？？那你说，下面的代码是显示数组的大小呢，还是显示指针的大小：     int a [4];     printf("%d", sizeof (a));

user: user-0
content: user-3：  int (*p)[3] = a;  二维数组名：a， 是指针？ 还是，指针的指针？

user: user-3
content: 用数组指针； int a[2][3] = {{1, 2, 3}, {4, 5, 6}}; int (*p)[3] = a;
user-0 提问: 遍历二维数组？

回复:
user: user-1
content: 引用 8 楼 Daffodiles 的回复:各位： 这个谁说说呢？ 你知道a[2][3]的地址么？都没分配！程序里永远不要存在未定义的行为！！！

user: user-1
content: 引用 3 楼 Daffodiles 的回复: int a[2][3]={{1,2,3},              {4,5,6}}; for(int *p=&a[0][0]; p<&a[2][3]; p++)   printf("%d ",*p);  为什么，上面程序是错？ 下标越界了！！

user: user-0
content: 各位： 这个谁说说呢？

user: user-2
content: #include <stdio.h> #include <stdlib.h>  int main() { 	int a[2][3] = { { 1, 2, 3 }, 	{ 4, 5, 6 } }; 	int *p = NULL; 	for (p = &a[0][0]; p < &a[1][3]; p++) 		printf("%d ", *p); 	return 0; }

user: user-2
content: #include <stdio.h> #include <stdlib.h>  int main() { 	int i; 	int a[2][3] = { { 1, 2, 3 }, 	{ 4, 5, 6 } }; 	int (*p)[3]= NULL; 	   p = a ; 	   for (i = 0; i < sizeof(a) / (sizeof(int)* 3); ++i) 	   { 		   for (int j = 0; j < sizeof(a) / (sizeof(int)* 2); j++) 			   printf("%d  ,", *(*(p + i) + j)); 		   printf("\n");  	   } 	return 0; }

user: user-3
content: 引用 3 楼 Daffodiles 的回复: int a[2][3]={{1,2,3},              {4,5,6}}; for(int *p=&a[0][0]; p<&a[2][3]; p++)   printf("%d ",*p);  为什么，上面程序是错？  数组名就可以当做指针（地址） int *p=a

user: user-0
content: u013163178：   程序错了！

user: user-0
content: int a[2][3]={{1,2,3},              {4,5,6}}; for(int *p=&a[0][0]; p<&a[2][3]; p++)   printf("%d ",*p);  为什么，上面程序是错？

user: user-0
content: 完全不用下标，只用指针，可以么？

user: user-4
content: #include<stdio.h> int main() { int i; int a[2][3] = {{1,2,3},                {4,5,6}}; int *p = NULL; p = a; for(i=0;i <sizeof(a)/sizeof(int); ++i) printf("%d\t",p[i]); return 0; }
user-0 提问: 在ASSERT(::IsWindow(m_hWnd));处中断

回复:
user: user-1
content: To set a breakpoint when a variable changes value   From the Edit menu, click Breakpoints. Click the Data tab of the Breakpoints dialog box. In the Expression text box, type the name of the variable. Click OK to set the breakpoint.

user: user-0
content: 问题还是没有解决，感觉应该是初始化时出的问题。。换了一种方法，不知道为什么就解决了，唉

user: user-1
content: 按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处，看不懂时双击下一行，直到能看懂为止。

user: user-2
content: 引用 4 楼 cr945211 的回复:引用 2 楼 zhaowech 的回复:能上详细的代码，有没有执行OnCancel或者OnOk之类的函数？   其他代码也没什么，只是得到字符串的代码了   没有用到取消之类的函数 没有全部代码，不好判断

user: user-0
content: 在列表的数据显示代码 void CServerDlg::OnDisSendList(CString str) { 	CString Pointx=str.Mid(6,4); 	CString Pointy=str.Mid(11,4); 	CString Theta=str.Mid(16,4); 	CString a1=str.Mid(21,4); 	CString v1=str.Mid(26,4);     m_ctlSendList.SetItemText(0,1,Pointx); 	m_ctlSendList.SetItemText(1,1,Pointy);     m_ctlSendList.SetItemText(2,1,Theta);     m_ctlSendList.SetItemText(3,1,a1);     m_ctlSendList.SetItemText(4,1,v1);  } 调试过程中的提示如图

user: user-0
content: 还有别的方法吗？

user: user-3
content: 用spy++看一下窗口是否存在

user: user-0
content: 引用 2 楼 zhaowech 的回复:能上详细的代码，有没有执行OnCancel或者OnOk之类的函数？   其他代码也没什么，只是得到字符串的代码了   没有用到取消之类的函数

user: user-0
content: 第一次的时候只是在CServerDlg类中，第二次开始就要CView类里得到字符串，然后在回到CServerDlg类中执行向m_ctlSendList写文本的操作。是因为这个原因所以窗口句柄出现问题了吗？怎么改

user: user-2
content: 能上详细的代码，有没有执行OnCancel或者OnOk之类的函数？

user: user-0
content: 补充一下，调试的时候发现，第一次需要向m_ctlSendList写文本的时候，m_hWnd还是正常的，第二次就变成了0000，第三次直接就中断了
user-0 提问: 求libcurl 32位和64的lib库，必须支持https

回复:
user: user-1
content: 引用 楼主 pengfangxu8 的回复:如题：求libcurl 32位和64的lib库，必须支持https。 linux的我会编译，也能成功，就是windows的我编不成功。 伤心，我自己编不成功！我网上找了博客，我照着别人一步一步的来编都有问题，所以在这儿求助下，请各位帮帮忙，谢谢！ 我的邮箱是375088168@qq.com 这里面有libcurl.dll：http://pan.baidu.com/s/1c0D0iuk#path=%252F%25E5%25B1%258C%25E7%25A5%259E
user-0 提问: 并归排序的一个小问题

回复:
user: user-1
content: while (left_begin <=left_end)    //把剩下的元素也都放到临时数组中             temp[i++] = array[left_begin++];         while (right_begin <= right_end)             temp[i++] = array[right_end++];    //同上  执行了这段代码你程序就结束了。但是array[]并没有改变。楼上的办法应该可以的

user: user-0
content: 引用 1 楼 ZHANGJIXIN 的回复:#include <stdio.h> #include <stdlib.h> #define SIZE 10  void merge(int array[], int min, int max, int temp[]);	//递归 void mergesort(int array[], int min, int mid,int max, int temp[]); //合并交换排序  int main(void) { 	int array[SIZE] = { 43, 6, 3, 26, 2, 7, 2, 9, 5, 7 }; 	int temp[SIZE]; 	 	merge(array, 0,SIZE-1, temp); 	for (int n = 0; n < SIZE; n++)	//打印排序完后的临时数组 		printf("%d,", temp[n]); 	 	return 0; }  void mergesort(int array[], int min, int mid,int max, int temp[])  { 	int i = min; 	int left_begin = min;	 	int left_end = mid;		//前面的区间范围 	int right_begin = mid + 1;	 	int right_end = max;	//后面的区间范围 	while (left_begin <= left_end&&right_begin <=right_end)  	{	//判断比较大小，并赋给临时数组 		if (array[left_begin] <= array[right_begin]) 			temp[i++] = array[left_begin++]; 		else 			temp[i++] = array[right_begin++]; 	}  	while (left_begin <=left_end)	//把剩下的元素也都放到临时数组中 		temp[i++] = array[left_begin++]; 	while (right_begin <= right_end) 		temp[i++] = array[right_begin++];	//同上  	for(int k = min; k <= max; k++)   //将缓冲区中的数据元素复制回原序列中 		array[k] = temp[k]; }  void merge(int array[], int min, int max, int temp[])  { 	if (min < max) 	{ 		int mid = (min + max)/2; 		merge(array, min, mid, temp); 		merge(array, mid + 1, max, temp); 		mergesort(array, min, mid, max, temp); 	} }    哥，注意对比你的第三十六行和我的有什么不同 引用 2 楼 FightForProgrammer 的回复:while (left_begin <=left_end)    //把剩下的元素也都放到临时数组中             temp[i++] = array[left_begin++];         while (right_begin <= right_end)             temp[i++] = array[right_end++];    //同上  执行了这段代码你程序就结束了。但是array[]并没有改变。楼上的办法应该可以的 谢谢

user: user-2
content: #include <stdio.h> #include <stdlib.h> #define SIZE 10  void merge(int array[], int min, int max, int temp[]);	//递归 void mergesort(int array[], int min, int mid,int max, int temp[]); //合并交换排序  int main(void) { 	int array[SIZE] = { 43, 6, 3, 26, 2, 7, 2, 9, 5, 7 }; 	int temp[SIZE]; 	 	merge(array, 0,SIZE-1, temp); 	for (int n = 0; n < SIZE; n++)	//打印排序完后的临时数组 		printf("%d,", temp[n]); 	 	return 0; }  void mergesort(int array[], int min, int mid,int max, int temp[])  { 	int i = min; 	int left_begin = min;	 	int left_end = mid;		//前面的区间范围 	int right_begin = mid + 1;	 	int right_end = max;	//后面的区间范围 	while (left_begin <= left_end&&right_begin <=right_end)  	{	//判断比较大小，并赋给临时数组 		if (array[left_begin] <= array[right_begin]) 			temp[i++] = array[left_begin++]; 		else 			temp[i++] = array[right_begin++]; 	}  	while (left_begin <=left_end)	//把剩下的元素也都放到临时数组中 		temp[i++] = array[left_begin++]; 	while (right_begin <= right_end) 		temp[i++] = array[right_begin++];	//同上  	for(int k = min; k <= max; k++)   //将缓冲区中的数据元素复制回原序列中 		array[k] = temp[k]; }  void merge(int array[], int min, int max, int temp[])  { 	if (min < max) 	{ 		int mid = (min + max)/2; 		merge(array, min, mid, temp); 		merge(array, mid + 1, max, temp); 		mergesort(array, min, mid, max, temp); 	} }    哥，注意对比你的第三十六行和我的有什么不同
user-0 提问: 谁有C语言能编出CF挂代码?求给

回复:
user: user-1
content: 我给，加我qq8721811316

user: user-2
content: Sleep（-1）；

user: user-3
content: 能用的不免费, 免费的不能用.

user: user-4
content: 有啊 你给多少钱？

user: user-5
content: 难度太大了，不会啊
user-0 提问: 求大神解释

回复:
user: user-1
content: 在你的程序中，第一个scanf输入了字符串以后，按回车键，此时把一行字符连同换行符一起送入缓冲区，缓冲区检测到有换行符，就把一行字符送入系统内存，送给了s，而换行符'\n'还留在缓冲区里

user: user-0
content: 缓冲区里面的回车怎么产生的

user: user-1
content: 只要在scanf("%c",&a);之前把缓冲区里面的回车清除掉都可以~

user: user-0
content: #include<stdio.h> main() {      char s[12],a;      scanf("%s",&s);      printf("%s",s);      getchar();      scanf("%c",&a);      printf("%c",a); } 为什么这样改也对

user: user-1
content: 在你的程序中，第一个scanf输入了字符串以后，按回车键，此时把一行字符连同换行符一起送入缓冲区，缓冲区检测到有换行符，就把一行字符送入系统内存，送给了s，而换行符'\n'还留在缓冲区里，换行符（line feed)ASCII码是10，你没清除缓冲区，又再用一个scanf输入a，a就会先检查缓冲区，发现里头有个换行符，就把换行符对应的ASCII码赋给了a 你用debug单步调试，就会发现ch的值是10  有三种方法 1:scanf（"%c",&ch);前面加flushall();或fflush(stdin); 2:scanf（"%c",&ch);改为scanf（" %c",&ch);%c前面加一个空格 3:scanf（"%c",&ch);改为scanf（"%s",&ch);  楼上这三种方法，就是冲掉了换行符。
user-0 提问: 为什么二维指针可以动态分配空间

回复:
user: user-1
content: 这个是对一维指针开辟空间，看清楚了。 几维指针都可以动态分配空间

user: user-2
content: 一维指针也可以动态分配空间

user: user-3
content: N维都可以啊。关键是它是指针

user: user-4
content: 我想楼主的问题可能是为什么指针的指针能够当作出参吧

user: user-5
content: 指针是指向某段内存的起始地址的，这个地址要么是已经分配好变量的地址首部，要么就是为指针手动分配的地址的首部
user-0 提问: 求大神指导。。二叉树的建立为什么用指针的指针

回复:
user: user-1
content: 这和二叉树没什么关系  你要把指针作为参数，并且还要在函数里给指针申请空间，就要这么做。传指针的地址进去才行。或者用引用 BTNode *&p

user: user-2
content: 因为你的指针要做输出参数

user: user-3
content: 因为要让头节点指像后来产生的节点，这样就需要修改头节点的值，如果不用指针的指针的话，是无法修改头节点的。
user-0 提问: c语言gets_s()不起作用

回复:
user: user-1
content: gets_s需要两个参数，后一个限定字符的个数，例如gets_s(data, 80)

user: user-2
content: 不管用就很有可能是缓冲区的问题，在它之前加个getchar()试试

user: user-3
content: scanf_s("%lf", e_pointer); 后面加上清空输入缓冲区
user-0 提问: 这里的！==老是报告错误，是不是书上写错了？？

回复:
user: user-0
content: 引用 13 楼 lovesmiles 的回复:引用 12 楼 filia2014 的回复:[quote=引用 10 楼 lovesmiles 的回复:] [quote=引用 8 楼 filia2014 的回复:] [quote=引用 6 楼 yln_sys 的回复:] 这本书叫什么名字啊？？？ 谭浩强 C程序设计第二版 不会吧？虽然谭浩强的书不算好，但也没有这么低级的错误吧？  只有"!="没有"!==". 你确定是你没有理解好书本的，还是书本真是这样写的？如果书本有!==这个东西，把书扔了。[/quote]goto end 这个是不是没有end关键词？retrun(null)是不是一样的[/quote] end不是关键字。goto后面通常接一个label。这个end在这里是一个自定义的label。 天啊，你的基础这么差，你看的是什么书。 不要书本没看完就急着搞代码[/quote]谭浩强 C程序设计第二版.我就是把书上的例子理解了就打一遍

user: user-1
content: 珍惜生命，换本合格的教材。

user: user-2
content: 自己细心检查吧 [code=c while((num != p1->num)&&(p1->next != NULL))  //对比一下你自己的 [/code]

user: user-3
content: 如果书上是!==的话，这书可以丢了。

user: user-4
content: 引用 12 楼 filia2014 的回复:引用 10 楼 lovesmiles 的回复:[quote=引用 8 楼 filia2014 的回复:] [quote=引用 6 楼 yln_sys 的回复:] 这本书叫什么名字啊？？？ 谭浩强 C程序设计第二版 不会吧？虽然谭浩强的书不算好，但也没有这么低级的错误吧？  只有"!="没有"!==". 你确定是你没有理解好书本的，还是书本真是这样写的？如果书本有!==这个东西，把书扔了。[/quote]goto end 这个是不是没有end关键词？retrun(null)是不是一样的[/quote] end不是关键字。goto后面通常接一个label。这个end在这里是一个自定义的label。 天啊，你的基础这么差，你看的是什么书。 不要书本没看完就急着搞代码

user: user-0
content: 引用 10 楼 lovesmiles 的回复:引用 8 楼 filia2014 的回复:[quote=引用 6 楼 yln_sys 的回复:] 这本书叫什么名字啊？？？ 谭浩强 C程序设计第二版 不会吧？虽然谭浩强的书不算好，但也没有这么低级的错误吧？  只有"!="没有"!==". 你确定是你没有理解好书本的，还是书本真是这样写的？如果书本有!==这个东西，把书扔了。[/quote]goto end 这个是不是没有end关键词？retrun(null)是不是一样的

user: user-5
content: 这本书叫什么名字啊？？？

user: user-6
content: while(num!-p1->num&&p1->nxet!==NULL) p1->nxet!==NULL num!-p1->num这也有问题

user: user-7
content: 买一本<c primer plus>吧，这本书挺不错的

user: user-4
content: 引用 8 楼 filia2014 的回复:引用 6 楼 yln_sys 的回复:这本书叫什么名字啊？？？ 谭浩强 C程序设计第二版 不会吧？虽然谭浩强的书不算好，但也没有这么低级的错误吧？  只有"!="没有"!==". 你确定是你没有理解好书本的，还是书本真是这样写的？如果书本有!==这个东西，把书扔了。

user: user-8
content: 引用 8 楼 filia2014 的回复:引用 6 楼 yln_sys 的回复:这本书叫什么名字啊？？？ 谭浩强 C程序设计第二版 假货，赶紧丢了

user: user-0
content: 引用 6 楼 yln_sys 的回复:这本书叫什么名字啊？？？ 谭浩强 C程序设计第二版

user: user-9
content: 不等于就是用!=，书上写错了吧

user: user-10
content: 函数中没有 “end:” 标号 不等是 “!=”

user: user-11
content: nxet.....
user-0 提问: 关于C语言的学习

回复:
user: user-1
content: c语言比较"简单",不像别的语言,有一大堆的控件,丰富的函数库什么的,c语言都是自己造轮子,数字结构自己写,算法自己实现,内存自己管理,所以你要学好他,就必须对计算机理论体系比较熟悉.

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对应的汇编并单步执行观察相应内存和寄存器变化。）  想要从本质上理解C指针，必须学习汇编以及C和汇编的对应关系。 从汇编的角度理解和学习C语言的指针，原本看似复杂的东西就会变得非常简单！ 指针即地址。“地址又是啥？”“只能从汇编语言和计算机组成原理的角度去解释了。” 但我又不得不承认：  有那么些人喜欢或者适合用“先具体再抽象”的方法学习和理解复杂事物；  而另一些人喜欢或者适合用“先抽象再具体”的方法学习和理解复杂事物。 而我本人属前者。  不要企图依赖输出指针相关表达式...的值【比如printf("%p\n",...);或者cout<<...】来理解指针的本质， 而要依赖调试时的反汇编窗口中的C/C++代码【比如void *p=(void *)(...);】及其对应汇编指令以及内存窗口中的内存地址和内存值来理解指针的本质。  这辈子不看内存地址和内存值；只画链表、指针示意图，画堆栈示意图，画各种示意图，甚至自己没画过而只看过书上的图……能从本质上理解指针、理解函数参数传递吗？本人深表怀疑！ 这辈子不种麦不收麦不将麦粒拿去磨面；只吃馒头、吃面条、吃面包、……甚至从没看过别人怎么蒸馒头，压面条，烤面包，……能从本质上理解面粉、理解面食吗？本人深表怀疑！！  提醒： “学习用汇编语言写程序” 和 “VC调试(TC或BC用TD调试)时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化，这样过一遍不就啥都明白了吗。 （Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。） 想要从本质上理解C指针，必须学习C和汇编的对应关系。” 不是一回事！  不要迷信书、考题、老师、回帖； 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实！  有人说一套做一套，你相信他说的还是相信他做的？ 其实严格来说这个世界上古往今来所有人都是说一套做一套，不是吗？  不要写连自己也预测不了结果的代码！  电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址； 人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……  十字链表交换任意两个节点C源代码（C指针应用终极挑战）http://download.csdn.net/detail/zhao4zhong1/5532495

user: user-3
content: C在底层有前景！想精通C语言，学编译原理，看C99或者C11标准C文法！想熟练，看几本经典教材即可，比如K&R

user: user-4
content: 我现在也在学习C语言，刚开始学就以计算机硬件和系统为基础这个不现实，并不是所有的C语言开发者都会工作在系统开发上面。而且上手也会比较慢，2楼赵4老师说的很对。

user: user-5
content: 参考一下——http://blog.csdn.net/u012421456/article/details/40681247

user: user-6
content: 引用 3 楼 u013163178 的回复:c语言比较"简单",不像别的语言,有一大堆的控件,丰富的函数库什么的,c语言都是自己造轮子,数字结构自己写,算法自己实现,内存自己管理,所以你要学好他,就必须对计算机理论体系比较熟悉. 不能同意你的说法：“不像别的语言，有一大堆的控件，丰富的函数库什么的” 如果说 C 语言什么都干不了，那我可以说 C++ 也什么都干不了。如果要说 C 什么都干不了，而 C++ 可以开发界面，完全是混淆概念。说 C 什么都干不了，指的是标准 C（ANSI C）、C 语法；说 C++ 可以开发界面，又说的是把各种建立在操作系统上的 API 封装起来的类库，语法和框架岂能相提并论。大堆控件和丰富的函数库归根结底还是由操作系统（平台）提供的，不管你用 C、C++ 都能搞。后半的“C 语言都是...“意思好像说除了 C 之外，别的语言都提供了这些一样，我觉得这样说比较妥当：不管是 C 还是 C++，学习只是学习一种思想，开发都是依赖于平台的，只是开发工具的开发商针对该语言提供了各种各样的库和框架。
user-0 提问: 求教、利用电脑怎么定位手机号码的位置啊？

回复:
user: user-1
content: 你是说当前位置还是手机号归属地？如果是归属地的话网上有各个号码段的归属地，写成代码很简单。如果是当前位置的话，这个就不是编程的范畴了。
user-0 提问: 请问高手，关于c语言编写接口的问题

回复:
user: user-1
content: 接口的范围太大了。

user: user-2
content: 不要做A语言代码修改为B语言代码的无用功。 也不要做用A语言代码直接调用B语言代码库这样复杂、这样容易出错的傻事。 只需让A、B语言代码的输入输出重定向到文本文件，或修改A、B语言代码让其通过文本文件输入输出。 即可很方便地让A、B两种语言之间协调工作。 比如： A将请求数据写到文件a.txt，写完后改名为aa.txt B发现aa.txt存在时，读取其内容，调用相应功能，将结果写到文件b.txt，写完后删除aa.txt，改名为bb.txt A发现bb.txt存在时，读取其内容，读完后删除bb.txt 以上A可以替换为任何一种开发语言或开发环境，B可以替换为任何一种与A不同的开发语言或开发环境。 除非A或B不支持判断文件是否存在、文件读写和文件更名。 但是谁又能举出不支持判断文件是否存在、文件读写和文件更名的开发语言或开发环境呢？  共享临时文本文件这种进程之间的通讯方法相比其它方法的优点有很多，下面仅列出我现在能想到的： ·进程之间松耦合 ·进程可在同一台机器上，也可跨机，跨操作系统，跨硬件平台，甚至跨国。 ·方便调试和监视，只需让第三方或人工查看该临时文本文件即可。 ·方便在线开关服务，只需删除或创建该临时文本文件即可。 ·方便实现分布式和负载均衡。 ·方便队列化提供服务，而且几乎不可能发生队列满的情况（除非硬盘空间满） ·……

user: user-3
content: 参考我的博文http://blog.csdn.net/turingo/article/details/8516327

user: user-4
content: 哪种接口？不同的接口有不同的模型

user: user-0
content: 哦，请问下，如果是接口是api是不是就编写成.dll文件，如果是com组件的话，用c如何实现网络和硬件编程的接口？？

user: user-5
content: 不知道你说的接口指 API 还是 COM。 如果是 API 也就是普通的函数了，做成静态库或者动态库。 如果是 COM 的话，就很麻烦那了，用 C++ 实现起来比较方便一点。

user: user-6
content: 感觉1#说的在理

user: user-5
content: 就是一个结构体，里面都是函数指针。
user-0 提问: 关于结构体的一个问题

回复:
user: user-1
content: 一个指向动态分配的内存空间(分配在堆上)，用完需要程序员自己用free释放; 一个指向栈上分配的内存空间，无需管释放问题，出了作用域自动释放

user: user-2
content: http://www.360doc.com/content/11/0428/18/6580811_112988089.shtml

user: user-3
content: 生命周期不同，自己分配要注意释放。 malloc和free

user: user-4
content: 前者是堆中手动分配的内存，用完之后，需要自己手动的释放，否则内存泄露，后者是栈自动分配的内存，超出作用域后，会自动释放，无需自己手动控制……

user: user-0
content: 引用 1 楼 user-5 的回复:stuct student *p; p=(struct student*)malloc（sizeof（struct student）） 这个是在堆栈上分配空间的 上面那个呢

user: user-5
content: stuct student *p; p=(struct student*)malloc（sizeof（struct student）） 这个是在堆栈上分配空间的
user-0 提问: 大神来看看我这个函数，问题是jc（）是不是死循环？

回复:
user: user-1
content: jc(K)没有初值，当然死循环了！！

user: user-2
content: return 3 * jc(i--);   //在这里死了。。。。。 这里用i--，参数传入的值始终是i，要是对操作符不熟悉可以分两行写 i--; return 3*jc(i);

user: user-3
content: 这么写会不会好一点 #include<stdio.h> #include<stdlib.h> int factorial(int n) { 	if(n == 1) 	{ 		return n; 	}	 	else 		return n * factorial(n-1); }  int main() { 	int n; 	int result; 	scanf("%d",&n); 	result = factorial(n); 	printf("%d\n",result); 	exit(0); }

user: user-4
content: 你的递归调用时参数没有变小啊 改成 --i  试试

user: user-5
content: 代码乱的都不像看了

user: user-6
content: 我该怎么说呢。。。 #include <stdio.h>  int jc(int i) { 	if(!i)return 1; 	return jc(i-1)*i; }  int main(void) {     int i,sum=0 ;     //printf("请输入想求的阶乘\n");     //scanf("%d",&i);     sum=jc(5);     printf("%d\n",sum);     return 0 ; }
user-0 提问: 这个程序怎么运行不了了，程序应该没有写错，可能是哪儿设置错了。

回复:
user: user-1
content: 就是说你在第7行使用的scanf已经不安全, 要使用安全版本的函数 scanf_s

user: user-2
content: 在代码最开头加一行： #pragma warning(disable:4996)

user: user-3
content: 编译器提示你: "scanf不安全, 要使用安全版本的函数 scanf_s".  用linux环境,然后使用gcc编译一下看看.

user: user-0
content: 关键是下面的错误提示不理解。
user-0 提问: 使用第三方库文件时dll放置问题

回复:
user: user-1
content: 引用 2 楼 xiaoxiangyue_lib 的回复:回复于： 2014-11-25 18:50:28 相互依赖吧！  什么意思？  就说，A.dll依赖于B.dll， 而B.dll又依赖于C.dll。一路下去。所有你加入了20多个dll也不奇怪。

user: user-2
content: a库需要b库。相互调用关系。

user: user-0
content: 回复于： 2014-11-25 18:50:28 相互依赖吧！  什么意思？

user: user-3
content: VC或者VS缺省掉一些动态库，老老实实加载缺失的dll吧

user: user-4
content: 相互依赖吧！
user-0 提问: 求大神指点linux下的C语言学习路线

回复:
user: user-1
content: 看TCPL，学习C语言 看鸟哥，学Linux的使用 看APUE，学系统的API 看Linux Kernel Internals，学习内核的知识 看The Art Of Unix Programming，Linux Philosophie，了解一些UNIX的哲学

user: user-0
content: 引用 13 楼 ForestDB 的回复:看TCPL，学习C语言 看鸟哥，学Linux的使用 看APUE，学系统的API 看Linux Kernel Internals，学习内核的知识 看The Art Of Unix Programming，Linux Philosophie，了解一些UNIX的哲学感谢！

user: user-0
content: 引用 12 楼 williamhong 的回复:学好英语，别上有中国字的技术网站好的，谢谢你！

user: user-2
content: 引用 12 楼 williamhong 的回复:学好英语，别上有中国字的技术网站 逼格真高 学好英语是真的 别上有中国字的技术网站 说得自己多叼的一样

user: user-3
content: 学好英语，别上有中国字的技术网站

user: user-0
content: 引用 9 楼 whizer 的回复:装一个linux虚拟机---> 敲一敲c语言程序----->边看边调 Unix高级环境编程--->内核设计与实现 --->自己增加一个module试试 ---->找一个实际项目做一做  一步一步来,不要仅仅看过书就说自己已经精通了, 尝试构造core dump, 调试gdb, 调试内存越界, 慢慢地就会通了, 再以后就靠自己了....(顺便说一句,真实运行的code和书本上的都是有区别的,只有真实的code才是最好的注释)谢谢！

user: user-0
content: 引用 8 楼 turingo 的回复:看完了就跟着实践啊。  引用 6 楼 u013138790 的回复:引用 5 楼 turingo 的回复:《鸟哥的Linux私房菜》非常好啊！  引用 2 楼 u013138790 的回复:能推荐几本书吗？除了鸟哥的Linux私房菜。。。我看完了啊。。。。而且我C语言的C PRIMER也看完了。。。用一年了。。。

user: user-4
content: 装一个linux虚拟机---> 敲一敲c语言程序----->边看边调 Unix高级环境编程--->内核设计与实现 --->自己增加一个module试试 ---->找一个实际项目做一做  一步一步来,不要仅仅看过书就说自己已经精通了, 尝试构造core dump, 调试gdb, 调试内存越界, 慢慢地就会通了, 再以后就靠自己了....(顺便说一句,真实运行的code和书本上的都是有区别的,只有真实的code才是最好的注释)

user: user-5
content: 看完了就跟着实践啊。  引用 6 楼 u013138790 的回复:引用 5 楼 turingo 的回复:《鸟哥的Linux私房菜》非常好啊！  引用 2 楼 u013138790 的回复:能推荐几本书吗？除了鸟哥的Linux私房菜。。。我看完了啊。。。。而且我C语言的C PRIMER也看完了。。。

user: user-6
content: 说那么多，先安装一个linux版本，然后用一年再说

user: user-0
content: 引用 5 楼 turingo 的回复:《鸟哥的Linux私房菜》非常好啊！  引用 2 楼 u013138790 的回复:能推荐几本书吗？除了鸟哥的Linux私房菜。。。我看完了啊。。。。而且我C语言的C PRIMER也看完了。。。

user: user-5
content: 《鸟哥的Linux私房菜》非常好啊！  引用 2 楼 u013138790 的回复:能推荐几本书吗？除了鸟哥的Linux私房菜。。。

user: user-0
content: 谢谢你们了！

user: user-7
content: 《Linux C编程一站式学习》

user: user-0
content: 能推荐几本书吗？除了鸟哥的Linux私房菜。。。

user: user-8
content: Unix高级环境编程，linux程序设计，unix网络编程！工具，鸟哥私房菜！再深入，精通驱动开发，内核设计与实现，深入linux内核架构
user-0 提问: c语言解码程序的问题

回复:
user: user-1
content: printf里面的%和变量的一一对应关系 scanf里面的%和变量以及变量前加不加&的一一对应关系 是C代码中非常容易出错的地方，而且通常编译还不出错。 所以在编译源代码之前值得专门仔细检查一遍甚至多遍。  在每个最后不带\n的printf后面加fflush(stdout); 在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin); 另外请检查scanf的返回值。  代码功能归根结底不是别人帮自己看或讲解或注释出来的；而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒：再牛×的老师也无法代替学生自己领悟和上厕所！ 单步调试和设断点调试（VS IDE中编译连接通过以后，按F10或F11键单步执行，按Shift+F11退出当前函数；在某行按F9设断点后按F5执行停在该断点处。）是程序员必须掌握的技能之一。
user-0 提问: 输油管道的问题思考

回复:
user: user-0
content: @user-1   我知道如果方向确定为x轴，只需要找中位数，但是如果方向不确定呢？  ps：我考虑的一个问题是，把所有的点放在一个圆中，这些点到圆心的距离比到平面其他点的距离都要小。。。。不知道这个结论对不对。。。。。。。。。

user: user-1
content: 东西向的油管，和x轴平行的方向啊              #1             #2             |                  |                #3             |                  |                 |   主管  |                  |                | ===========================================                    |                           |                      #4                        |                                               #5 只是这样一个位置关系而已 方向是确定的

user: user-0
content: 思路肯定还是中位数，但是这里的中位数计算怎嘛解决，原来的是y轴上的中位数，现在方向并不确定，就没有距离的参考标准了
user-0 提问: sizeof()？

回复:
user: user-1
content: 二维数组是不是也是一维数组呢   ？我想是的

user: user-2
content: 同意楼上的用变量记。 你如果用sizeof来计算。。。。你确定这代码提交上去不扣工资？

user: user-3
content: sizeof(a[0]) / sizeof( a[0][0])

user: user-4
content: 行: sizeof(a) / sizeof(*a); 列: sizeof(*a);

user: user-0
content: 各位： 这个谁说说呢？

user: user-5
content: sizeof *a / sizeof **a

user: user-6
content: 不要算，用变量记住。

user: user-7
content: int row = sizeof(a) / sizeof(*a); int col = sizeof(a) / row;
user-0 提问: c语言求助

回复:
user: user-1
content: for(;input != 'y' || 'n';) //语法错了  input != 'y' && input!='n'

user: user-2
content: 到时什么问题啊

user: user-2
content: 汗啊

user: user-3
content: 学c语言之前应该先学语文

user: user-4
content: 什么问题？楼主倒是说一下啊！！！
user-0 提问: 如何设计一个定时读取文件数据的程序？

回复:
user: user-0
content: 引用 15 楼 zhao4zhong1 的回复:码农卖萌宝典：我驾驭不了超过100行的源代码！  笑新手 显能耐吗

user: user-1
content: 码农卖萌宝典：我驾驭不了超过100行的源代码！

user: user-0
content: 搜索出来的代码太长了，我看不懂！

user: user-1
content: 四体不勤，五谷不丰。

user: user-0
content: 引用 3 楼 zhao4zhong1 的回复:ReadDirectoryChangesW  参考 MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\FWATCH\*.* 或 Microsoft SDK\samples\winbase\IO\fWatch\*.* 兄台的提示对我很有帮助，我上网搜了一下，发现ReadDirectoryChangesW实时监控文件变化情况能够满足我的需求，可是，我不知道怎么在我的项目里使用他，我想请你或者别的见到此信息的朋友帮我实现一下好吗？ 帮助不是白帮，一点小意思肯定是有的。

user: user-1
content: http://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=2&ch=&tn=91824599_hao_pg&bar=&wd=msdn+sample+fwatch&rsv_pq=8ac636ab0000732e&rsv_t=5744zKNnMqVRjXDZ0CyOz7jJJr%2BIIWO92Tw4lL6tZ7EAGaVN1Wro8KEwyRENYwZcozERV02V&rsv_enter=0&inputT=7844

user: user-1
content: 引用 6 楼 zhao4zhong1 的回复:[quote=引用 4 楼 alibaren 的回复:] 谢谢你，可是我没有MSDN 不会自己搜索下载MSDN98或SDK6吗？[/quote] 自顶

user: user-2
content: 引用 楼主 alibaren 的回复:我现在有一个文件夹，下面有9个文件，是某软件数据缓存，大约一分钟更新一次，也就是说，每分钟增加一个数据块在每个文件中。我现在就是想设计一个程序去读取这些文件并把结果实时传到数据库，请问我改如何去实现呢？ 目前，读取文件的程序部分我已实现，现在就是实时这一步。也就是说每分钟给数据库传一条新增的数据记录。例如9：30分传一条记录，9:31分再传第二条.........过一分钟就传一次  请大家给你个简洁靠谱的方案好吗？ tail -f [path]

user: user-3
content: 亲，你可以使用MFC创建向导，先创建一个窗口或者CMD程序，然后弄个OnTimer事件就行了。如果是窗体程序，直接把OnTImer拖进去就行了，然后设置一下该控件的属性，双击它编写代码。

user: user-0
content: 其实，我只要想每隔分钟执行一下程序中的函数，有人帮忙写个范例吗

user: user-1
content: 引用 4 楼 alibaren 的回复:谢谢你，可是我没有MSDN 不会自己搜索下载MSDN98或SDK6吗？

user: user-4
content: 引用 楼主 alibaren 的回复:我现在有一个文件夹，下面有9个文件，是某软件数据缓存，大约一分钟更新一次，也就是说，每分钟增加一个数据块在每个文件中。我现在就是想设计一个程序去读取这些文件并把结果实时传到数据库，请问我改如何去实现呢？ 目前，读取文件的程序部分我已实现，现在就是实时这一步。也就是说每分钟给数据库传一条新增的数据记录。例如9：30分传一条记录，9:31分再传第二条.........过一分钟就传一次  请大家给你个简洁靠谱的方案好吗？ 搜索“可等待计时器“

user: user-0
content: 谢谢你，可是我没有MSDN

user: user-1
content: ReadDirectoryChangesW  参考 MSDN98\SAMPLES\VC98\SDK\WINBASE\IO\FWATCH\*.* 或 Microsoft SDK\samples\winbase\IO\fWatch\*.*

user: user-0
content: 引用 1 楼 yangyangsnr 的回复:创建个任务计划第分钟执行一次 新手，不知道如何创建

user: user-5
content: 创建个任务计划第分钟执行一次