Mxode/CSDN-C_Language-2013_2023 huggingface dataset:
user-0 提问: c语言中如何对负数开平方返回相应的复数

回复:
user: user-1
content: 楼主问的是用c语言,所以参见http://en.cppreference.com/w/c/numeric/complex/csqrt

user: user-2
content: //sqrt complex example #include <iostream> #include <complex> using namespace std; int main() {     complex<double> mycomplex (-1.0,0.0);     cout << "The sqrt value of " << mycomplex << " is " << sqrt(mycomplex) << '\n';     return 0; } //The sqrt value of (-1,0) is (0,1) //

user: user-2
content: http://www.cplusplus.com/reference/complex/sqrt/index.html

user: user-3
content: n1570:  7.3.8.3 The csqrt functions Synopsis 1 #include <complex.h> double complex csqrt(double complex z); float complex csqrtf(float complex z); long double complex csqrtl(long double complex z); Description 2 The csqrt functions compute the complex square root of z, with a branch cut along the negative real axis. Returns 3 The csqrt functions return the complex square root value, in the range of the right halfplane (including the imaginary axis).
user-0 提问: 求各位大牛解答

回复:
user: user-0
content: 引用 4 楼 zhao4zhong1 的回复://首先输入一个正整数P（1 ≤ P ≤10000），代表了所有产品的总数，接下来是P行字符串（均是小写，长度不超过20个字符）。 //然后输入一个正整数Q（1 ≤ Q ≤100000），Q代表了记得的关键字符串的个数，接下来是Q行关键字字符串。 //输出Q行，每行对应第Q个关键字字符串在所有产品中出现的次数。 #include <stdio.h> bool find(char *a, char *b) {     int i,j,k;     bool found=false;      for (i=0; a[i]!=0; i++) {         for (j=i, k=0; a[j]==b[k] && a[j]!=0; j++, k++);         if (b[k]==0) {             found=true;             break;         }     }     return found; } int main() {     static char a[10000][21];     static char b[100000][21];     int P,Q;     int i,j;     int sum;      scanf("%d",&P);     for (i=0;i<P;i++) {         scanf("%20s",a[i]);     }     scanf("%d",&Q);     for (j=0;j<Q;j++) {         scanf("%20s",b[j]);     }     for (j=0;j<Q;j++) {         sum=0;         for (i=0;i<P;i++) {             if (find(a[i],b[j])) sum++;         }         printf("%d\n",sum);     }     return 0; } //输入： //3 //abc //abcdef //xyz //4 //abc //xyz //def //lmn //输出： //2 //1 //1 //0 //    看懂了，谢谢

user: user-1
content: 引用 3 楼 qq986353946 的回复:[quote=引用 1 楼 github_27756899 的回复:] scanf("%s",a[i]);    改为:      scanf("%s",a);  scanf("%s",b[i]);    改为:      scanf("%s",b);  仅修改了一部分。这样改了以后能运行，但是没有达到题目效果啊[/quote] 楼上  赵4老师 已给出代码。

user: user-2
content: //输入： //3 //aaa //aa //aaaa //1 //aa //输出： //3 //

user: user-2
content: //首先输入一个正整数P（1 ≤ P ≤10000），代表了所有产品的总数，接下来是P行字符串（均是小写，长度不超过20个字符）。 //然后输入一个正整数Q（1 ≤ Q ≤100000），Q代表了记得的关键字符串的个数，接下来是Q行关键字字符串。 //输出Q行，每行对应第Q个关键字字符串在所有产品中出现的次数。 #include <stdio.h> bool find(char *a, char *b) {     int i,j,k;     bool found=false;      for (i=0; a[i]!=0; i++) {         for (j=i, k=0; a[j]==b[k] && a[j]!=0; j++, k++);         if (b[k]==0) {             found=true;             break;         }     }     return found; } int main() {     static char a[10000][21];     static char b[100000][21];     int P,Q;     int i,j;     int sum;      scanf("%d",&P);     for (i=0;i<P;i++) {         scanf("%20s",a[i]);     }     scanf("%d",&Q);     for (j=0;j<Q;j++) {         scanf("%20s",b[j]);     }     for (j=0;j<Q;j++) {         sum=0;         for (i=0;i<P;i++) {             if (find(a[i],b[j])) sum++;         }         printf("%d\n",sum);     }     return 0; } //输入： //3 //abc //abcdef //xyz //4 //abc //xyz //def //lmn //输出： //2 //1 //1 //0 //

user: user-0
content: 引用 1 楼 github_27756899 的回复:scanf("%s",a[i]);    改为:      scanf("%s",a);  scanf("%s",b[i]);    改为:      scanf("%s",b);  仅修改了一部分。这样改了以后能运行，但是没有达到题目效果啊

user: user-0
content: 这样改了以后能运行，但是没有达到题目效果啊

user: user-1
content: scanf("%s",a[i]);    改为:      scanf("%s",a);  scanf("%s",b[i]);    改为:      scanf("%s",b);  仅修改了一部分。
user-0 提问: 为什么强制转换来判断一个数是否含有小数,在某些情款失效?

回复:
user: user-1
content: 十进制浮点数都会存在无穷循环的情况，更何况很多十进制浮点数用二进制就没法精确表示，如0.1，除非你用一些特别的方法来实现精确表示 通常比较两个浮点数是否相等，可以比较两个浮点数的差的绝对值是否小于一个很小的正数，如0.000001

user: user-2
content: http://img.my.csdn.net/uploads/201301/04/1357276191_5263.jpg

user: user-0
content: 引用 2 楼 zhao4zhong1 的回复:http://img.my.csdn.net/uploads/201301/04/1357276191_5263.jpg 怎么到这样子的资料?

user: user-3
content: 这个问题不要用浮点型。 直接读入字符串，然后记录小数点的位置，删掉小数点，剩下的部分作为分子，根据小数点位置生成分母。 浮点数经常有误差，不适合这种操作。
user-0 提问: c语言能不能编程求克罗内克积

回复:
user: user-1
content: 试试这个 #include <stdio.h> #include <stdlib.h>  //get an m*n matric's [i,j] element, a is a pointer to a[0][0] #define		E(a, rows, cols, i, j)		*(((a)+((i)*(cols)))+(j))  void print(double *a, int m, int n); double *kron(double *a, int m, int n, double *b, int p, int q);  int main() { 	double	a[2][3] = {{1,2,3},{4,5,6}}; 	double	b[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}; 	double	*c; 	print((double *)a, 2, 3); 	print((double *)b, 3, 4); 	c = kron((double *)a, 2, 3, (double *)b, 3, 4); 	if (c != NULL) 	{ 		print(c, 6, 12); 		free(c); 	} 	return 0; }  void print(double *a, int m, int n) { 	int		i, j; 	for (i = 0; i < m; i++) 	{ 		for (j = 0; j < n; j++) 			printf("%6.f", E(a, m, n, i, j)); 		printf("\n"); 	} }  double *kron(double *a, int m, int n, double *b, int p, int q) { 	double	*c; 	int		i, j, ii, jj; 	int		rows = m * p, cols = n * q; 	if (m <= 0 || n <= 0 || p <= 0 || q <= 0) 		return NULL; 	c = malloc(rows * cols * sizeof(double)); 	if (c == NULL) 		return NULL; 	for (i = 0; i < m; i++) 		for (j = 0; j < n; j++) 			for (ii = 0; ii < p; ii++) 				for (jj = 0; jj < q; jj++) 					E(c, rows, cols, i * p + ii, j * q +jj) = E(a, m, n, i, j) * E(b, p, q, ii, jj); 	return c; }
user-0 提问: 重复检查一段数字中的重复数求大神debug啊

回复:
user: user-0
content: 引用 2 楼 qldsrx的回复:bool digit_seen[10] = { false }; 这个写法似乎有点问题，至少c语言里面，只会对数组的第一个元素进行初始化，后面9个元素都是不确定值，建议用bzero函数将数组全部内存置零。 其余的内啥问题，另外如果希望提高效率，可以不用scanf函数，而直接提取字符串后分析字符串的每个字符，scanf的性能不太好，还有兼容性问题。 这个初始化方法来自hnking的《C语言程序设计现代办法》，说是第一个为false其余的为0也相当于false。然后因为是C新手只能用scanf()函数啦

user: user-0
content: 引用 3 楼 paschen的回复:下一次判断时需要恢复bool digit_seen[10]中元素的状态   int main() { 	bool digit_seen[10] = { false }; 	int digit; 	long number;  	for (;;) 	{ 		printf("Enter a number:"); 		scanf_s("%ld", &number);  		if (number <= 0) 			break; 		else 		{ 			for (; number > 0; ) 			{ 				digit = number % 10; 				if (digit_seen[digit]) 					break; 				digit_seen[digit] = true; 				number /= 10; 			} 			if (number > 0) 				printf("Repeated digit.\n"); 			else 				printf("No repeated digit.\n"); 		}  		for (int i = 0; i < 10; i++) 		{ 			digit_seen[i] = false; 		} 	} 	return 0; }   明了！也就是说要在每次输入数至少再次初始化数组为false的对吧，谢谢~

user: user-0
content: 引用 1 楼 user-3的回复:测试数据是什么 测试数据？啊C语言新手不懂啊

user: user-1
content: 下一次判断时需要恢复bool digit_seen[10]中元素的状态   int main() { 	bool digit_seen[10] = { false }; 	int digit; 	long number;  	for (;;) 	{ 		printf("Enter a number:"); 		scanf_s("%ld", &number);  		if (number <= 0) 			break; 		else 		{ 			for (; number > 0; ) 			{ 				digit = number % 10; 				if (digit_seen[digit]) 					break; 				digit_seen[digit] = true; 				number /= 10; 			} 			if (number > 0) 				printf("Repeated digit.\n"); 			else 				printf("No repeated digit.\n"); 		}  		for (int i = 0; i < 10; i++) 		{ 			digit_seen[i] = false; 		} 	} 	return 0; }

user: user-2
content: bool digit_seen[10] = { false }; 这个写法似乎有点问题，至少c语言里面，只会对数组的第一个元素进行初始化，后面9个元素都是不确定值，建议用bzero函数将数组全部内存置零。 其余的内啥问题，另外如果希望提高效率，可以不用scanf函数，而直接提取字符串后分析字符串的每个字符，scanf的性能不太好，还有兼容性问题。

user: user-3
content: 测试数据是什么
user-0 提问: 请问为什么我输入了N后，没有跳出第一个while，反而进入了第一个while的无限循环

回复:
user: user-1
content: 引用 11 楼 u014626834 的回复:[quote=引用 10 楼 hhhhhhhhhhkkkkkkkkkk 的回复:] 楼主你是没弄懂循环的真正意思，循环循环，说白了就是一次次的执行，执行完第一次又接着执行第二次。。。。。直到循环条件不满足为止。并不是执行完这次后就停在循环的最后那里。 就你写的这个代码，按N跳出第一个循环后会接着执行下面那个循环，当再按N后跳出第二个循环来到外面的循环，开始去测试1是不是真的（所有非0都是真的）所得的结果是真的，又接着执行里面的第一个循环。。。。。。。。。直到你关程序（因为1总是真的，所以总跳不出外面那个while）。  我的意思是，当我输入了N后，variable是N，已经不符合循环条件，为什么还会无限执行第一个循环[/quote] 它并没有无限执行第一个循环，当你第一次输入N后，就跳出了第一个循环进第二个循环里了，但是第二个循环的条件也是while (variable != 'N')，所以你第二次输入N后它就跳出第二个循环，因为外面还有个while (1)的循环，通过判断，需要继续执行while(1)里的内容，所以又跑去里面的第一个循环while (variable != 'N')里去了，当你第三次输入N里，跳出里面的第一个循环，进第二个循环。。。。。懂？

user: user-2
content: 引用 4 楼 u014626834 的回复:[quote=引用 1 楼 u010370871 的回复:] while（1）没有跳出来  就算没有跳出来那也应该是在循环里什么都不做才对吧[/quote]  什么都不做就是死循环，你的这是两层循环，只跳出来了最里边那层，最外边那个没有跳出来所以会死！！！   再说一遍，你的这个程序是两层循环！

user: user-1
content: 楼主你是没弄懂循环的真正意思，循环循环，说白了就是一次次的执行，执行完第一次又接着执行第二次。。。。。直到循环条件不满足为止。并不是执行完这次后就停在循环的最后那里。 就你写的这个代码，按N跳出第一个循环后会接着执行下面那个循环，当再按N后跳出第二个循环来到外面的循环，开始去测试1是不是真的（所有非0都是真的）所得的结果是真的，又接着执行里面的第一个循环。。。。。。。。。直到你关程序（因为1总是真的，所以总跳不出外面那个while）。

user: user-3
content: 在每个最后不带\n的printf后面加fflush(stdout); 在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin); 另外请检查scanf的返回值。

user: user-4
content: 你用 "%d" 读入，当输入不是数字时（比如你的 N ），scanf 会失败，而输入 'N' 不会被读出。  这样你的 scanf 就会持续失败，然而什么也读不进来。  请参考 6 楼

user: user-5
content: int variable = 0;  variable 是int型的n是char型的

user: user-6
content: 一般循环内连续调用scanf需要刷新缓存，在scanf前加rewind（stdin）

user: user-0
content: 可是就算没有跳出来也没有理由执行第一个循环吧，我不是输入了N吗

user: user-0
content: 引用 1 楼 u010370871 的回复:while（1）没有跳出来  就算没有跳出来那也应该是在循环里什么都不做才对吧

user: user-7
content: 没有给循环正常终止，那自然是无限循环

user: user-1
content: 他是跳出来了，不过外面还有一个while(1)，这个就狠了，连出口都没有。

user: user-2
content: while（1）没有跳出来

user: user-0
content: 引用 10 楼 hhhhhhhhhhkkkkkkkkkk 的回复:楼主你是没弄懂循环的真正意思，循环循环，说白了就是一次次的执行，执行完第一次又接着执行第二次。。。。。直到循环条件不满足为止。并不是执行完这次后就停在循环的最后那里。 就你写的这个代码，按N跳出第一个循环后会接着执行下面那个循环，当再按N后跳出第二个循环来到外面的循环，开始去测试1是不是真的（所有非0都是真的）所得的结果是真的，又接着执行里面的第一个循环。。。。。。。。。直到你关程序（因为1总是真的，所以总跳不出外面那个while）。  我的意思是，当我输入了N后，variable是N，已经不符合循环条件，为什么还会无限执行第一个循环
user-0 提问: 为什么提交poj第2250题时，代码第5,6行顺序对调后就会提示错误

回复:
user: user-1
content: 并不是所有的错误都能被编译器和一个测试集发现。

user: user-0
content: 但是正常可以提交正确，对调5,6行就不可以了

user: user-1
content: 看5 6 行的内容，对调应该不会对一个正确的程序产生影响。  你的程序应该是在别的地方有错误。内存写出界的可能性大。自己调一下吧。
user-0 提问: 求助：IAR中建立ARM9工程，遇到Error[40]: Bad instruction

回复:
user: user-0
content: 引用 1 楼 user-1 的回复:指令是rvds的，用armcc才行。  我想把程序移植到IAR for arm上，昨天有研究了一下，感觉是iar在汇编文件的格式上和gcc 或armcc的格式不同，我会继续研究，还希望大家多给建议。

user: user-1
content: 指令是rvds的，用armcc才行。
user-0 提问: C语言菜鸟求助，[Error] expected identifier before 'false'

回复:
user: user-1
content: 楼主，你这是C语言的写法，但是文件确却是C++后缀名，建立的文件不对，所以报错

user: user-2
content: 楼主标题标明c语言，却又是c++代码，麻烦下次选好分类

user: user-0
content: 引用 4 楼 baijiaheizhiganmao 的回复:typedef enum {false, true} bool; 删掉这句.false和true是内置的,你完全可以直接拿来用.但是这个是示例，是不能删的。只可以改自己写的子程序

user: user-0
content: 引用 2 楼 wang0635 的回复:文件名改成 1.c 试试。好像在C++中false是个关键字不行。。。

user: user-3

user: user-4
content: Dev C++中，新建项目时，选择C项目，这样自动产生的文件就是C语言文件，而不是C++的了 再把你上面那些代码复制进去 编译就按C语言的语法了

user: user-0

user: user-0
content: 这是题目要求

user: user-4
content: 引用 9 楼 only_one_moment 的回复:应该是我自己写的子函数不正确和原来主函数没关系的 把文件名 “数组作业1.cpp” 改成 “数组作业1.c“

user: user-0
content: 应该是我自己写的子函数不正确和原来主函数没关系的

user: user-0
content: 引用 7 楼 wang0635 的回复:引用 6 楼 only_one_moment 的回复:[quote=引用 2 楼 wang0635 的回复:] 文件名改成 1.c 试试。好像在C++中false是个关键字不行。。。 将编译器出错信息完整贴上来看看[/quote]

user: user-4
content: 引用 6 楼 only_one_moment 的回复:引用 2 楼 wang0635 的回复:文件名改成 1.c 试试。好像在C++中false是个关键字不行。。。 将编译器出错信息完整贴上来看看

user: user-5
content: typedef enum {false, true} bool; 删掉这句.false和true是内置的,你完全可以直接拿来用.

user: user-2
content: c语言中没有布尔类型，你可以考虑用c99标准添加的_Bool类型

user: user-4
content: 文件名改成 1.c 试试。好像在C++中false是个关键字

user: user-0
content: 就是做一个带头结点的链表的操作，只有子函数是我们的作业，前面的头文件的声明都是不能动的，但是出现了 5	14	E:\未命名1.cpp	[Error] expected unqualified-id before 'false' 5	14	E:\未命名1.cpp	[Error] expected identifier before 'false' 这两个错误。没找出来。求帮助，谢谢~~~
user-0 提问: 能帮我解释一下这整道题的原理吗

回复:
user: user-1
content: else 和最接近的 if 搭配

user: user-2
content: {     int	x = 100, a = 10, b = 20;     int	v1 = 5, v2 = 0;     if (a < b)         if (b != 15)             if(!v1) 				x = 1;             else 				if(v2) 					x = 10;     x = -1;     printf("%d\n", x); } 这样能看清楚了吧

user: user-3
content: 这代码风格真是不能忍...  else 和最接近的 if 搭配  最后的x = -1;跟上面的if else没有任何关系 所以程序相当于给x赋值-1
user-0 提问: 求解释

回复:
user: user-1
content: 楼主不适合当码农。鉴定完毕。

user: user-2
content: if(x!=y) 	{ 		if(x>y)  			printf("X>Y\n"); 		else     			printf("X<Y\n"); 	} 	else 		printf("X==Y\n");  楼主这样看，也许就明白了。

user: user-3
content: 这不是来判断两个数的大小吗？

user: user-4
content: 判断两整数关系

user: user-5
content: 引用 7 楼 zhao4zhong1 的回复:楼主不适合当码农。鉴定完毕。 楼主应该找更高大上的职业。。

user: user-0
content: 就是代码不明白啊

user: user-6
content: 题在哪呢，只看到了代码

user: user-0
content: 整个都不明白

user: user-7
content: 你哪里不明白？

user: user-8
content: 显示两个数关系,只有>,<,= 三种
user-0 提问: 二叉树的非递归遍历算法都是什么意思？

回复:
user: user-1
content: 我当年看算法也没一次就看懂，看不懂只要先知道有原理和有这么回事就行，先往后看，等有一些基础再回来看也就明白了

user: user-2
content: “给定一个小点的输入，完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门！ 递归函数关注以下几个因素 ·退出条件 ·参数有哪些 ·返回值是什么 ·局部变量有哪些 ·全局变量有哪些 ·何时输出 ·会不会导致堆栈溢出

user: user-3
content: 递归就是嵌套调用一个函数，非递归就是除了递归的

user: user-4
content: 贴出看不懂的地方

user: user-5
content: 非递归法就是迭代法，一两句说不清楚，建议看书
user-0 提问: win32 API 图形基础问题

回复:
user: user-0
content: 多谢 解决了

user: user-1
content: 你这个明显一开始cxClient和cyClient都没值。 应该在WM_CREATE的消息里用GetClientRect给这两个变量赋值；第二个方法就是你在窗口显示后调整窗口大小，触发WM_SIZE消息。

user: user-2
content: LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {     static int cxClient, cyClient;     HDC hdc;     PAINTSTRUCT ps;     HPEN	hPen, hPenOld;	//增加两个变量     switch (message)     {     case WM_SIZE:         cxClient = LOWORD(lParam);         cyClient = HIWORD(lParam);//你原来打成了cxClient了         return 0;     case WM_PAINT:         hdc = BeginPaint(hwnd, &ps);          //////////////////划线的颜色         hPen = CreatePen( PS_SOLID , 3 , RGB( 255 , 0 , 0 )); 		hPenOld = ( HPEN )SelectObject ( hdc , hPen ); 		///////////////////          Rectangle(hdc, cxClient / 8, cyClient / 8,                   7 * cxClient / 8, 7 * cyClient / 8);          MoveToEx(hdc, 0, 0, NULL);         LineTo(hdc, cxClient, cyClient);          MoveToEx(hdc, 0, cyClient, NULL);         LineTo(hdc, cxClient, 0);          Ellipse(hdc, cxClient / 8, cyClient / 8,                 7 * cxClient / 8, 7 * cyClient / 8);          RoundRect(hdc, cxClient / 4, cyClient / 4,                   3 * cxClient / 4, 3 * cyClient / 4,                   cxClient / 4, cyClient / 4);          /////////////////释放         SelectObject (hdc , hPenOld); 		DeleteObject ( hPen );         //////////////////          EndPaint(hwnd, &ps);         return 0;     case WM_DESTROY:         PostQuitMessage(0);         return 0;     }     return DefWindowProc(hwnd, message, wParam, lParam);  }  改成这样试试

user: user-0
content: 断点的时候 while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg);   } 这个 一直循环没有执行  其他我和书上对了很多遍没有问题

user: user-3
content: 首先保证你的代码是都执行了。 更新窗口试试
user-0 提问: 新人求助文件文件读取遇到的问题

回复:
user: user-1
content: 没准还得加一句     wcout.imbue(locale("chs")); 在开头才能正确输出汉字。

user: user-1
content: 先将文件d:\a\a.txt在记事本中另存为编码为Unicode的文件。 typedef struct{  wchar_t s[100][20];  wchar_t vexs[100];  int arcs[100][100]; } MGraph;  MGraph *G;  G = (MGraph *)malloc(sizeof(MGraph));  FILE *gp;  gp = fopen("d:\\a\\a.txt", "r,css=UTF16-LE");    for (i = 1; i <= n; i++){     fwscanf(gp, L"%s" ,G->s[i]);  }  fclose(gp);   for (i = 1; i <= n; i++)  wcout<< G->s[i]<<endl;

user: user-2
content: 改为%s试试

user: user-0
content: 文本内容    a吉吉米， 不死，  四部，  费，  像，  及，  还有，  不过，  爱上，  跟他，  好吧，  换吗，  奋斗，  上网，     主要是想把这些存成结点的名称

user: user-0
content: 代码 typedef struct{  char s[100][20];  char vexs[100];  int arcs[100][100]; }MGraph;       MGraph *G;  G = (MGraph *)malloc(sizeof(MGraph));  FILE *gp;  gp = fopen("d:\\a\\a.txt", "r");    for (i = 1; i <= n; i++){  fscanf(gp, "%c" ,&G->s[i]);    }  fclose(gp);   for (i = 1; i <= n; i++)  cout<< G->s[i]<<endl;
user-0 提问: 在全局变量中复制二维数组为什么复制不进去

回复:
user: user-1
content: fscanf(fp,"%d",&board[i][j]); 改为:fscanf(fp,"%c",&board[i][j]);

user: user-2
content: printf里面的%和变量的一一对应关系 scanf里面的%和变量以及变量前加不加&的一一对应关系 是C代码中非常容易出错的地方，而且通常编译还不出错。 所以在编译源代码之前值得专门仔细检查一遍甚至多遍。

user: user-3
content: 引用 3 楼 lin5161678 的回复:[quote=引用 2 楼 hhhhhhhhhhkkkkkkkkkk 的回复:] 呵呵，二维数组不像一维数组这样好复制，你这个要用值复制的话，应该这样： 将  memcpy(current.state,board,sizeof(board));  改成  for(int i=0;i<SIZE;i++)     memcpy(current.state[i],board[i],sizeof(board[i]));  也就是要一维一维的复制。说错了 二维数组 直接这样复制就可以了   memcpy(current.state,board,sizeof(board));  完全没问题  [/quote] 唉，二维指针用习惯了都忘了二维数组还可以这样，太失败了。 楼主你这程序好像没啥毛问题，我用VS都编译出结果了，正常的，只不过因为显示用的是%d，所以结果是数字。

user: user-4
content: 引用 2 楼 hhhhhhhhhhkkkkkkkkkk 的回复:呵呵，二维数组不像一维数组这样好复制，你这个要用值复制的话，应该这样： 将  memcpy(current.state,board,sizeof(board));  改成  for(int i=0;i<SIZE;i++)     memcpy(current.state[i],board[i],sizeof(board[i]));  也就是要一维一维的复制。说错了 二维数组 直接这样复制就可以了   memcpy(current.state,board,sizeof(board));  完全没问题

user: user-3
content: 呵呵，二维数组不像一维数组这样好复制，你这个要用值复制的话，应该这样： 将  memcpy(current.state,board,sizeof(board));  改成  for(int i=0;i<SIZE;i++)     memcpy(current.state[i],board[i],sizeof(board[i]));  也就是要一维一维的复制。

user: user-5
content: fscanf(fp,"%d",&board[i][j]);  你这里给的 "%d" ，但是后边给了一个 char *，这肯定是不行的。  你需要在输入之后输出一把，看看你的读入是不是就已经失败了。
user-0 提问: https如果没有数字证书，服务器公钥是直接在握手的时候发送给客户端？ 

回复:
user: user-1
content: 1. 握手是产生会话密钥, 必须要有证书 2. 消息认证是让接收方能够识别消息源, 真伪之类, 签名是保证不被小三侵犯, 双方骗骗无妨

user: user-0
content: up 起来，高手呢

user: user-0
content: 引用 1 楼 akirya 的回复:证书是确定服务器是不是伪造的。  你的意思是，要搞https规定：数字证书必须存在？   我第1个问题，是看别人帖子里，书本上没有明说，也是第一次见过这个说法，就赶紧问问。  对了，那第2个问题呢？

user: user-2
content: 证书是确定服务器是不是伪造的。
user-0 提问: 怎么通过一次循环找到两个最小值

回复:
user: user-1
content: int a[n]; //a[n]初始化 ... int min1=a[0],min2=a[0],b=0; for(int i =0;i<n; i ++) { if(a[i]<min1) min1=a[i]; if(min1<min2) { b=min2; min1=b; min2=min1; } }

user: user-2
content: 引用 1 楼 user-2 的回复:定义两个变量来存两个最小值，假如为min1（最小）与min2（第二小），循环中判断，如果比min1小，让min2等于min1，min1等于此数；如果介于min1与min2之间，则min2等于此数，这亲遍历完一遍就是两个最小的数了  min1初值设置为数组中前两个数中小的那个，min2是大的那个

user: user-2
content: 定义两个变量来存两个最小值，假如为min1（最小）与min2（第二小），循环中判断，如果比min1小，让min2等于min1，min1等于此数；如果介于min1与min2之间，则min2等于此数，这亲遍历完一遍就是两个最小的数了
user-0 提问: 有经历过华三通信的笔试和面试的吗，分享一下内容好吗？

回复:
user: user-0
content: 请问您应聘的是什么职位呀？笔试涉及的只有c和数据结构吗？编程是不是考的链表和字符串的相关操作呀？谢谢！

user: user-1
content: 我过了的，但是没有去；是北京上地那家；笔试和面试；笔试都是基础的；面试就谈你做的，然后你觉得你做的最好的方面谈；当时弹的是存储方面的问题。
user-0 提问: 链表访问越界

回复:
user: user-0
content: 附代码#include <iostream> #include <string.h> #include <cstdio> #include <stdlib.h>  using namespace std; struct Node { 	int data; 	struct Node *next; 	struct Node *pre; }; typedef struct Node Node, *PNode; struct FrontNode { 	PNode head; 	PNode tail; }; typedef FrontNode DuLink, *PDuLink; /******************************/ /*			   建立           */ /******************************/  void CreateList(DuLink *h) {  	h->head = (PNode)malloc(sizeof(Node)); 	h->tail = (PNode)malloc(sizeof(Node)); 	h->head->pre = NULL; 	h->head->next = NULL; 	h->tail->pre = NULL; 	h->tail->next = NULL; 	h->head->data = 0;  	PNode p = h->head;     for(int i = 0; i < 600; i++)     {         PNode q;         q = (PNode)malloc(sizeof(Node));         q->data = 0;          p->next = q;         q->pre = p;         p = q;     }     h->tail = p; }  int main() {     DuLink sum;     CreateList(&sum);     DuLink rn;     CreateList(&rn);  //    rn.tail->pre->data = 2; //    sum.tail->pre->data = 1;     rn.head->next->data = 2;     sum.head->next->data = 2;     for(int n = 1; n < 2000; n++)     {         PNode p = rn.tail->pre, q;         int ret = 0;         while(p!=rn.head)         {             int temp = (p->data*n+ret);             //cout << temp << endl;             p->data = temp%10;             ret = temp/10;             p = p->pre;         }         //cout << "乘法" << endl;         p = rn.head->next;         ret = 0;         while(p!=rn.tail) 		{             int temp = p->data+ret*10;             p->data = temp/(2*n+1);             ret = temp%(2*n+1);             p = p->next;         }         //cout << "除法" << endl;         p = rn.tail->pre;         q = sum.tail->pre;         ret = 0;         while(q!=sum.head)         {             int temp = p->data + q->data + ret;             q->data = temp%10;             ret = temp/10;             p = p->pre;             q = q->pre;         }         //cout << "加法" << endl;     }     PNode p = sum.head->next;     int k;     cin >> k;     int cnt = 0;     while(cnt <= k)     {         if(cnt == 0)             cout << p->data << ".";         else             cout << p->data;         p = p->next;         cnt++;     }     cout << endl; }

user: user-0
content: 引用 1 楼 user-1 的回复:head->pre 与 tail->next 没有赋值。 引用 1 楼 user-1 的回复:head->pre 与 tail->next 没有赋值。 谢谢，已解决

user: user-1
content: head->pre 与 tail->next 没有赋值。
user-0 提问: c语言  i++ 和 ++i 问题求解

回复:
user: user-1
content: http://bbs.csdn.net/topics/370153775

user: user-2
content: 引用 9 楼 CarryU 的回复:[quote=引用 5 楼 lz20120808 的回复:] 首先结果是：a=1,b=1,c=0,d=1 a++,b++; 独自成为一句表示a=a+1;，b同理； 而包含在一句代码中，c++表示先使用c的值，c再自加1，而++d表示先自加1 ，然后再使用d的值。。希望明白 明白了，十分感谢，不知道实际编程中会遇到这样的问题吗？[/quote]这个东西比较的简单，注意一下就不会出错~

user: user-3
content: 后置自增符号是进行自增操作，并返回增加前的拷贝

user: user-0
content: 引用 5 楼 lz20120808 的回复:首先结果是：a=1,b=1,c=0,d=1 a++,b++; 独自成为一句表示a=a+1;，b同理； 而包含在一句代码中，c++表示先使用c的值，c再自加1，而++d表示先自加1 ，然后再使用d的值。。希望明白 明白了，十分感谢，不知道实际编程中会遇到这样的问题吗？

user: user-4
content: 程序执行的顺序点

user: user-2
content: 首先结果是：a=1,b=1,c=0,d=1 a++,b++; 独自成为一句表示a=a+1;，b同理； 而包含在一句代码中，c++表示先使用c的值，c再自加1，而++d表示先自加1 ，然后再使用d的值。。希望明白

user: user-5
content: 引用 3 楼 CarryU 的回复:[quote=引用 2 楼 fefe82 的回复:] a++；a 自增，返回a 自增之前的值。 ++a ; a 自增，返回 a 自增之后的值。  a++,++b; 两个返回的值都被丢弃了（没有赋值给任何变量）。后续打印出的 a b 自增后的值。 printf(...., c++, ++b) ， 这个打印出来的是两个 ++ 的返回值。 a++不是等同于a=a+1有赋值吗？[/quote]  a++ 有赋值。  a++ 与 a=a+1 并不是等同的。比如他们的返回值就是不同的。

user: user-0
content: 引用 2 楼 fefe82 的回复:a++；a 自增，返回a 自增之前的值。 ++a ; a 自增，返回 a 自增之后的值。  a++,++b; 两个返回的值都被丢弃了（没有赋值给任何变量）。后续打印出的 a b 自增后的值。 printf(...., c++, ++b) ， 这个打印出来的是两个 ++ 的返回值。 a++不是等同于a=a+1有赋值吗？

user: user-5
content: a++；a 自增，返回a 自增之前的值。 ++a ; a 自增，返回 a 自增之后的值。  a++,++b; 两个返回的值都被丢弃了（没有赋值给任何变量）。后续打印出的 a b 自增后的值。 printf(...., c++, ++b) ， 这个打印出来的是两个 ++ 的返回值。

user: user-6
content: 月经来了
user-0 提问: 请大家帮我看看，是哪出了问题。为什么输入”1，小风“。输出的“1，乱码”

回复:
user: user-1
content: 仅供参考：#include <stdio.h> char s[]="123 ab 4"; char *p; int v,n,k; void main() {     p=s;     while (1) {         k=sscanf(p,"%d%n",&v,&n);         printf("k,v,n=%d,%d,%d\n",k,v,n);         if (1==k) {             p+=n;         } else if (0==k) {             printf("skip char[%c]\n",p[0]);             p++;         } else {//EOF==k             break;         }     }     printf("End.\n"); } //k,v,n=1,123,3 //k,v,n=0,123,3 //skip char[ ] //k,v,n=0,123,3 //skip char[a] //k,v,n=0,123,3 //skip char[b] //k,v,n=1,4,2 //k,v,n=-1,4,2 //End.

user: user-2
content: 引用 1 楼 user-3 的回复:你输入的是中文的逗号吧，scanf函数中要求的可是英文的 嗯，他说的没啥错……

user: user-3
content: 你输入的是中文的逗号吧，scanf函数中要求的可是英文的

user: user-0
content: 没用啊，不是这个问题，麻烦你们再仔细看看
user-0 提问: 急求！！！

回复:
user: user-1
content: 引用 1 楼 user-1 的回复:第一个，第一次循环结束后，i变成了21，p也指向num[20]了，所以下一次使用p之前应先p--，保证它指向num[19] 第二个，function(1)=1; function(2)=2; 两句有问题，函数值是数值表达式，不能被赋值实际上这两句是多余的

user: user-1
content: 第一个，第一次循环结束后，i变成了21，p也指向num[20]了，所以下一次使用p之前应先p--，保证它指向num[19] 第二个，function(1)=1; function(2)=2; 两句有问题，函数值是数值表达式，不能被赋值
user-0 提问: 求解C语言

回复:
user: user-1
content: #include <stdio.h> #include <math.h> #define PI 3.14159265 int main() {     double p,s,c;      p=PI/4.0;     s=sin(p);     c=cos(p);     printf("%g\n",s*s+s*c-c*c);//0.5     return 0; }

user: user-0
content: 请帮忙编写一下代码吧
user-0 提问: 一个数如果恰好等于它的因子之和 为什么s=0必须在for里面啊

回复:
user: user-0
content: 谢谢，我已经问过老师啦，因为只有for里面的才会循环，，，我也给忘啦，，，谢谢你，

user: user-1
content: 因为你每次求因子和肯定是从0开始加起来啊，不然不就会存储了上一轮的和么
user-0 提问: 有熟悉libevent的么

回复:
user: user-1
content: 这个是单线程的事件驱动啊 建议楼主学习一个epoll或者iocp，看看基本原理

user: user-2
content: 单线程的啊，肯定是这样的，如果你的方法会阻塞，请把阻塞部分另开线程去执行。

user: user-3
content: 一个进程中回调函数在同一时刻只会有一个事件在执行，楼主没明白事件驱动的含义吧
user-0 提问: qt 对话框testdialog的lineEdit要获取对话框xt的lineEdit的内容，为什么获取不到，求大神帮忙

回复:
user: user-1
content: 引用 2 楼 q12wwww 的回复:[quote=引用 1 楼 user-1 的回复:] xt *tt=new xt()是什么意思,重新new一个, 原来那个不用了? 这是为了在testdialog.cpp里引用xt.cpp的啊[/quote]刚new出来的都没显示, edit当然就没有值了, 你应该在main把w,s想办法关联一下, 在display中直接得s就可以了

user: user-0
content: 引用 1 楼 user-1 的回复:xt *tt=new xt()是什么意思,重新new一个, 原来那个不用了? 这是为了在testdialog.cpp里引用xt.cpp的啊

user: user-1
content: xt *tt=new xt()是什么意思,重新new一个, 原来那个不用了?
user-0 提问: 求大神指导怎样用C++编出其逻辑关系

回复:
user: user-1
content: if (a in ATGC) { return (a == b)?1:0; }

user: user-2
content: A a; B b; if (b == 0) { return 0; } else  {  if (a in ATGC) { return a == b; }  return 1; }
user-0 提问: int定义变量位置不同而出现的问题

回复:
user: user-1
content: 源代码文件扩展名改为.cpp

user: user-2
content: 古老的 C 语言编译器，变量的定义必须放在运行的代码之前。

user: user-3
content: 编译器太老了
user-0 提问: borland c中出现declaration syntax error怎么办？？

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

user: user-2
content: 每一个函数声明都要加;号 函数定义才不要

user: user-3
content: void view(Hnode *q) 这样的后面要加分号，后面的也要加分号
user-0 提问: 击button第一次显示第二次隐藏，当第一次button点击是，点击第二个buttton显示同时收回第一个button显示内容

回复:
user: user-1
content: 应该用Combox控件

user: user-0

user: user-2
content: 把逻辑层的代码发上来啊，不知道你的UI业务是什么逻辑...  当你点击一个选项时，复选框需要返回init的状态。 有时点击两次才响应的问题有很多，比如你的业务逻辑写的有漏洞、或者当你鼠标点击压下时有拖动控件效果。。。  具体要看你代码
user-0 提问: VC++

回复:
user: user-1
content: != 是一个整体，中间不能有空格

user: user-2
content: 这是语法错误 ，多自己根据编译器提示的去改正错误

user: user-3
content: 你这是编译出错。代码写的有问题，根据错误信息检查下把
user-0 提问: 数据结构问题

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

user: user-2
content: 引用 3 楼 believeforever6 的回复: 下次贴代码可以这样  string str = "hello word";

user: user-0

user: user-0
content: 谢谢你，解决了， 我还有一段代码，自己看不出哪里出错了麻烦帮忙改一下 Description  利用串操作实现基于给定英文段落（100~200000）构造英文词典（英文单词按字典序排序）  Input  一篇文章（包含若干个单词，标点符号全部是标准的英文字符）。  Output  输出文章里面所有单词（按照字典序，每个单词一行）。  Sample Input  Hello world! Sample Output  hello world  我的代码 #include <cstring> #include <cstdio> #include <algorithm> #include <iostream> using namespace std; int main () {     char ch[210000];     char cch[2100][100];     while(gets(ch)){         int lch=strlen(ch);         int flog=0;         int ans=0;         int cnt=0;         for(int i=0;i<lch;i++){             if(ch[i]>='a'&&ch[i]<='z'){                 flog=1;                 cch[ans][cnt]=ch[i];                 cnt++;             }             else if(ch[i]>='A'&&ch[i]<='Z'){                 flog=1;                 cch[ans][cnt]=ch[i]+32;                 cnt++;             }             else if(flog==1){                 flog=0;                 ans++;                 cnt=0;             }         }         sort(ch,ch+ans);         for(int i=0;i<ans;i++){             cout << cch[i]<<endl;         }     } }

user: user-3
content: 这看起来就是一个简单的进栈、出栈的问题。  首先，建立一个栈，当有人上车时，就把他们依次入栈，当有人下车时，就按下车人数出栈若干次并输出即可。
user-0 提问: 为什么*argv可以与NULL进行比较？

回复:
user: user-0
content: @user-1，没有注意到，漏过了。多谢

user: user-1
content: 5.1.2.2.1 Program startup 2 If they are declared, the parameters to the main function shall obey the following constraints: — The value of argc shall be nonnegative. — argv[argc] shall be a null pointer. .......
user-0 提问: 请问下面的函数，如果在主函数中memory(pointer,10);为什么程序会出现错误，既不能直接对a分配，在函数中定义p来分配也不行，该怎么用函数分配呢

回复:
user: user-1
content: 呃。。入参是a，指针a并没有赋值，并且a应该使用引用

user: user-2
content: int memory(int **a,int number) {     *a = ...//malloc     //... }
user-0 提问: 初级的C语言程序，但是学艺不精中文字符串总有问题，还请大侠赐教！

回复:
user: user-0
content: 谢谢各位了，已经搞定了。

user: user-1
content: 楼主贴代码的时候可以用编辑器的代码功能。

user: user-2
content: '张三' ==> "张三"  注意引号，其余同。
user-0 提问: MinGW 无法运行

回复:
user: user-0
content: http://www.mingw.org/wiki/InstallationHOWTOforMinGW 我上去看了，找不到 rxvt.exe , sh.exe,

user: user-1
content: http://blog.csdn.net/chenqing0927/article/details/8648851
user-0 提问: 求助求助

回复:
user: user-1
content: 哪有这好事 单向循环链表得了

user: user-2
content: 严格来说有点难哈，我能想到的只有一个近乎作弊的办法，就是把一个struct当作链域来用，那当然想要多少枚向前向后的指针都没有问题。  node->nodelink->prev node->nodelink->next
user-0 提问: c 语言实现多线程ping

回复:
user: user-1
content: win 系统有api 能拿到返回值   ＝ ＝！ 我要回答linux 怎么都是win 的破烂问题！！

user: user-2
content: 自己实现一下ping 在多线程sleep()一下就行了，ping的实现是原始套接字发icmp 好像echo包就行了。

user: user-3
content: 还是实现多进程ping来得容易：#include <windows.h> #include <stdio.h> #include <string.h> char YN(int k) {     FILE *f;     char fn[40];     char ln[80];     char yn;     int n;      yn='N';     sprintf(fn,"d:\\ping%d.txt",k);     f=fopen(fn,"r");     if (NULL!=f) {         n=0;         while (1) {             if (NULL==fgets(ln,80,f)) break;//             if (strstr(ln,"ms ")) {                 yn='Y';                 break;//             }             n++;             if (n>=4) break;//         }         fclose(f);     }     return yn; } void main(int argc,char **argv) {     char cmdstr[256];     int i;     int IP[3];     char c;      if (argc<2) {     USAGE:         printf("Usage example:\n    %s 192.168.60.\nto test 192.168.60.1-254\n",argv[0]);         return;     }     if (4==sscanf(argv[1],"%d.%d.%d%c",&IP[0],&IP[1],&IP[2],&c)) {         if (0<=IP[0] && IP[0]<=255          && 0<=IP[1] && IP[1]<=255          && 0<=IP[2] && IP[2]<=255          && '.'==c) {             for (i=1;i<255;i++) {                 sprintf(cmdstr,"cmd /c ping %s%d -n 1 -w 1000 >d:\\ping%d.txt",argv[1],i,i);                 WinExec(cmdstr,SW_HIDE);             }             Sleep(3000);             for (i=1;i<255;i++) {                 printf("%c %s%d\n",YN(i),argv[1],i);             }             Sleep(3000);             WinExec("cmd /c del /q d:\\ping*.txt",SW_HIDE);         } else goto USAGE;     } else goto USAGE; }

user: user-4
content: select可以控制时间的啊，楼主怎么写的贴出来看看就好了
user-0 提问: 在线等！急！ 关于 初级 汇编语言的题目

回复:
user: user-1
content: 据说AT&T汇编中，带l的操作，一般都是4个字节，32位。 引用 4 楼 qq_32056009 的回复:为什么 数据类型 是 int 呢？

user: user-1
content: 晕死，AT&T汇编……完全看不懂。

user: user-0
content: 为什么 数据类型 是 int 呢？

user: user-2
content: 1楼答案有待实际验证，不一定对。

user: user-2
content: int *p,q; p=&q; q=%ebx

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对应的汇编并单步执行观察相应内存和寄存器变化。）

user: user-2
content: 引用 3 楼 zhao4zhong1 的回复:1楼答案有待实际验证，不一定对。 movl (%eax), %edx ;将eax的值对应地址开始的4个字节的值读到edx中 movl (%edx),%ebx ;将edx的值对应地址开始的4个字节的值读到ebx中 If the register %eax maps to a C variable p and the register %edx maps to a C variable q.  What is the data type of p in C?  What is the data type of q in C? Write the equivalent C code for the above operation? 1楼我将操作方向弄反了。 int *p,q; q=*p; //再将q的值读到ebx中
user-0 提问: 求教一个最新问题，就是关于释放内存的问题！！

回复:
user: user-1
content: 你为啥不这样修改呢？ //释放链表     /*current = Head;       while (current != NULL)     {         node* p=current;         current = current->Next;         free(p);     }

user: user-2
content: free了current, current->Next就不存在了

user: user-0
content: 引用 2 楼 hzk745 的回复:你为啥不这样修改呢？ //释放链表     /*current = Head;       while (current != NULL)     {         node* p=current;         current = current->Next;         free(p);     }嗯嗯  我先建立了一个临时变量 就可以了！

user: user-0
content: 引用 3 楼 user-3 的回复:先把current的内容复制给另一个变量，然后current指向下一条，再释放temp中的内容。嗯 可以了！！谢谢啦！

user: user-3
content: 先把current的内容复制给另一个变量，然后current指向下一条，再释放temp中的内容。
user-0 提问: 用C语言实现在txt文件中的查找与替换功能

回复:
user: user-1
content: 数据结构（C语言）书里都有讲，串的模式匹配，我看的时候挺伤脑筋的，算法好不好，性能差距很大（比如对于几M的文本文件）。

user: user-2
content: 引用 2 楼 zhao4zhong1 的回复:所谓修改删除文件a某位置的内容，其实是读打开文件a，再将‘a中修改删除位置之前的内容＋修改删除的内容＋a中修改删除位置之后的内容’保存到文件b，关闭文件a，删除文件a，将文件b改名为与之前文件a相同的名字，仅此而已。 ++ 这个最原始最单纯，也未必效率有多差，说不定是最好的

user: user-3
content: 参考Linux命令sed的源代码！

user: user-4
content: 引用 楼主 baidu_32054243 的回复:如何实现在txt文件中的查找与替换功能，能不能给代码和大量注解，想了好几天都没有头绪 字符串查询子串推荐BoyerMoore算法，效率很高

user: user-3
content: 所谓修改删除文件a某位置的内容，其实是读打开文件a，再将‘a中修改删除位置之前的内容＋修改删除的内容＋a中修改删除位置之后的内容’保存到文件b，关闭文件a，删除文件a，将文件b改名为与之前文件a相同的名字，仅此而已。

user: user-5
content: 查找很简单吧, 比如文件的长度为N字节, 要查找的字符串长度为M字节 则循环N-M次, 每次得到的字符串与要查找的字符串比较. 如果相等, 就找到了.  替换的话, 先执行查找操作, 得到若干个要替换的字符串首字符的索引,  然后把文件写到内存中, 如查到要替换的字符串个数为N, 则执行2N+1次fread操作 接着用一次fwrite覆盖原文件.
user-0 提问: if的语法

回复:
user: user-1
content: 就是判断条件成不成立

user: user-2
content: if()()里就是条件表达式，值为真就成立，反之if不成立

user: user-3
content: c语言里没有bool类型，if直接判断（）中的值是不是0，如果是char类型，看它的ascii码值，指针看是不是NULL

user: user-4
content: C语言中BOOL类型后增加的，如果编译器不支持C99标准，是不认识BOOL是啥东东的

user: user-5
content: 为0为假，非0都是真

user: user-6
content: if后可以根任何类型，只要该类型可以转换为bool，如char、int、int*等都行，如果是其他类类型，也要求这个类能转换成bool

user: user-7
content: C 语言没 BOOL 类型 （或 bool 类型）。  C 语言中， if () 中的表达式需要为 scaler type （包括整型，浮点型与指针类型）。当表达式的值不为 0 是，执行 if () { ... } 中的部分。当表达式的值为零时，执行 else { .. } 中的部分 （如果没有 else ，则什么也不执行）。

user: user-8
content: 为0为假，非0都是真
user-0 提问: 关于strcpy

回复:
user: user-1
content: 编译器，对debug版本和release版本对局部变量也就是栈的上分配的字节数不一样。debug版本会多一些，这也是很多程序 debug版本没事儿，release版本出错的原因之一。

user: user-1
content: 或许和你的编译选项有关，你也许用的是 debug  版本，试试release版本会不会崩溃

user: user-2
content: 其实电脑开机后物理内存的每个字节都是可读写的，从来不会因为所谓的new、delete或malloc、free而被创建、销毁。区别仅在于操作系统内存管理模块在你读写时是否能发现并是否采取相应动作而已。操作系统管理内存的粒度不是字节而是页，一页通常为4KB。

user: user-3
content: 1.编译时：C语言是并不进行越界检查的一门语言。虽然你越界了，但是仍然不会报错  2.运行：你在strcpy(t,s)或者输出printf("%s\n",t)的时候,都是传递的指针。在strcpy或者printf内部只是借用这个指针进行间接访问（类似于t[4]这种形式。                 在运行时出错，除非访问了系统地址段才会报错。                其次，当程序较大，使用了t[2]后面的内存，则程序的输出会出错

user: user-4
content: 你的字符串再长点，一定会崩溃。 姑且算是32位的，因此这个2字节后面，还有函数指针4个字节，2个参数8字节，一共有22个有效的内存空间，那么在执行strcpy(t,s);的后，这些内存空间压入到栈里不在需要了，执行结束后，指向的是后面的printf函数，之前的代码不再被访问，因此即使你strcpy了9个字节的长度（包括结束符0），也不会影响后面的print函数的执行，因此程序不会崩溃。

user: user-5
content: 看运气

user: user-6
content: 运气好而已  比如mac os * thread #1: tid = 0x821f8, 0x00007fff841340ae libsystem_kernel.dylib`__pthread_kill + 10, queue = 'com.apple.main-thread', stop reason = signal SIGABRT   * frame #0: 0x00007fff841340ae libsystem_kernel.dylib`__pthread_kill + 10     frame #1: 0x00007fff8b6a2500 libsystem_pthread.dylib`pthread_kill + 90     frame #2: 0x00007fff8cacf37b libsystem_c.dylib`abort + 129     frame #3: 0x00007fff8cacf4f2 libsystem_c.dylib`abort_report_np + 181     frame #4: 0x00007fff8caf59cc libsystem_c.dylib`__chk_fail + 48     frame #5: 0x00007fff8caf599c libsystem_c.dylib`__chk_fail_overflow + 16     frame #6: 0x00007fff8caf5be9 libsystem_c.dylib`__strcpy_chk + 83     frame #7: 0x0000000100000f17 a.out`main + 39     frame #8: 0x00007fff923915ad libdyld.dylib`start + 1 (lldb)

user: user-7
content: C语言不对数组下标是否越界进行检查

user: user-8
content: 越界了，但不代表会崩溃，只有单越界后这部分内容可能用于其他用途时就可能导致意外或不正确的结果 这种错误有时是很难发现的 为了防止这种溢出，新版VS都默认要求使用更加安全的函数strcpy_s，该函数需要输入目的地字符数组的大小，函数中会检查是否越界

user: user-9
content: 想象一排空房子，属于你的有两个房间，其他的房间虽然不属于你，其他房间没有人的时候，你想住哪儿住哪儿，但是如果其他房间有人，你要住进去，那就要打架了！

user: user-10
content: 并不是所有错误的程序都会崩溃。  所有错误的程序都有可能崩溃。
user-0 提问: 新手请教

回复:
user: user-1
content: 第一个程序，当i等于1时，内层for循环执行5次，此时j的值为5；i等于2时，由于此时j=5，内层循环for不满足执行条件，所以无操作；以此类推，以后外层的三次for循环，内层for都不满足循环条件。         第二个程序，j每次都会在外层for循环执行后、内层for循环执行前进行初始化，这样就能输出您要的答案。

user: user-2
content: #include<stdio.h> int main() {     int i = 1,j;     for (;i <= 5;i++)     {         j=1;         for (;j <= 5 - i;j++)                       printf(" ");                   printf("*****\n");     } } 比较一下.

user: user-3
content: 因为在进入第二个for循环时会先执行j=1

user: user-4
content: 第二个程序中你j在哪声明的

user: user-5
content: 为什么  j  不一样呢

user: user-6
content: 因为第2个j的赋值在循环里面，赋了5次值。
user-0 提问: 请问第二个线程创建后覆盖了第一个线程创建的数据？

回复:
user: user-0
content: 引用 4 楼 ipqtjmqj的回复:引用 3 楼 dezhihuang 的回复:[quote=引用 1 楼 ipqtjmqj 的回复:] 你传给每个线程的参数是同一个，都是test，虽然链表是动态创建的，但保存头结点，即test.pHead只有一块内存，当然会覆盖了。请问有什么解决办法呢？ 不知你要建几个线程，我看你i是0到10，但每次却加5， 假设建n个线程，i 从0到n-1，则先前建test时改成 ThreadStruct *test = new ThreadStruct[n]; 然后原来每次传的是test改成test+i[/quote] 非常感谢，按你说的成功了！谢谢

user: user-1
content: 引用 3 楼 dezhihuang 的回复:引用 1 楼 ipqtjmqj 的回复:你传给每个线程的参数是同一个，都是test，虽然链表是动态创建的，但保存头结点，即test.pHead只有一块内存，当然会覆盖了。请问有什么解决办法呢？ 不知你要建几个线程，我看你i是0到10，但每次却加5， 假设建n个线程，i 从0到n-1，则先前建test时改成 ThreadStruct *test = new ThreadStruct[n]; 然后原来每次传的是test改成test+i

user: user-0
content: 引用 1 楼 ipqtjmqj 的回复:你传给每个线程的参数是同一个，都是test，虽然链表是动态创建的，但保存头结点，即test.pHead只有一块内存，当然会覆盖了。请问有什么解决办法呢？

user: user-2
content: https://www.baidu.com/s?ie=utf-8&f=3&rsv_bp=0&rsv_idx=1&tn=baidu&wd=c%E5%92%8C%E6%8C%87%E9%92%88&rsv_pq=a8f8e6a700008a85&rsv_t=bee4koZGhtpHv7LJRbXVyjLozkrKXDdzftBqQVMIqtiliJGvdz%2FoKai%2F5SU&rsv_enter=1&rsv_sug3=1&rsv_sug1=1&rsv_sug2=1&prefixsug=c%E4%B8%8E&rsp=3

user: user-1
content: 你传给每个线程的参数是同一个，都是test，虽然链表是动态创建的，但保存头结点，即test.pHead只有一块内存，当然会覆盖了。
user-0 提问: 关于txt里面的’\0'

回复:
user: user-1
content: 使用UltraEdit打开txt，按16进制编辑。

user: user-2
content: \0 这种转义表达方式只是C/C++里定义的，你在文本文件中输入\0他是理解成一个 \ 和一个0  貌似Windows自带的记事本你是没办法输入这些不可显示的字符的

user: user-3
content: txt中\0是2个字符.字符串中是1个字符 用空格回车都可以分开,
user-0 提问: vs210配置packet.dll问题

回复:
user: user-0
content: 好吧 那楼上的大神能不能推荐几本winsock网络编程的书啊。我现在的系统是win7 工具就是VS2010

user: user-1
content: 别看赵4 乱回答 你要做底层网络的操作呀 那个我原来也想，不过后来没有实验成功过  我记得就winxp 里面可以 用sendarp 这个函数 你那个方法貌似 已经不可行 不用试验了

user: user-0
content: 什么鬼MSDN98\SAMPLES\VC98\SDK\NETDS\WINSOCK\*.*

user: user-2
content: MSDN98_1.ISO http://pan.baidu.com/s/1dDF41ix,  MSDN98_2.ISO http://pan.baidu.com/s/1bnGo0Vl 先下载安装MSDN98  再参考： MSDN98\SAMPLES\VC98\SDK\NETDS\WINSOCK\*.*
user-0 提问: 求解，编译没问题，但是运行就结束进程

回复:
user: user-1
content: 你想要表达啥不太理解，主要在两点： 1.char *a[15]={"xiangtuo"};，这个是指针数组，也就是说，a[0]就是char*元素指向“xiangtuo”，所以sort(char *a[],int n),这个里面穿的n为啥不是1而是15？ 2.printf("%s",a),这个肯定有问题，估计是乱码 你可以重新整理下你的思路，想下到底要做啥？

user: user-2
content: 因为你这程序不到1秒就运行完了，竟然退出了，在程序最后加上getchar();  表示等待用户输入一个字符

user: user-3
content: getchar();

user: user-4
content: a里面放的是指针变量a[0]的地址，printf(“%s”,a)能输出字符串吗……

user: user-5
content: 你只初始化了数组的第一个元素，15个字符串，只有第一个是有值的，后面14个全部为NULL，对NULL调用strcmp函数，直接引发内存崩溃。

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

user: user-7
content: for(i=0;i<n-1;i++)
user-0 提问: C sqlite在安卓环境下匹配出乱码，x86正常

回复:
user: user-1
content: 编辑器的编码格式，编译器的编码编译选项，操作系统的默认字符集，都有关

user: user-0
content: 引用 1 楼 zhao4zhong1 的回复:对电脑而言没有乱码，只有二进制字节；对人脑才有乱码。啊 GBK:0xB0 0xA1,Unicode-16 LE:0x4A 0x55,Unicode-16 BE:0x55 0x4A,UTF-8:0xE5 0x95 0x8A 你好，都是utf8编码，有的时候匹配出的乱码还不一定一样，有的时候能匹配出所需内容，但是后面却多了一个乱码，但有时连所需内容都没匹配出来， 最令人不明白的是，在x86环境下，代码没有任何问题，试验过无数次，也不会出现乱码的情况

user: user-0
content: 引用 1 楼 zhao4zhong1 的回复:对电脑而言没有乱码，只有二进制字节；对人脑才有乱码。啊 GBK:0xB0 0xA1,Unicode-16 LE:0x4A 0x55,Unicode-16 BE:0x55 0x4A,UTF-8:0xE5 0x95 0x8A 你好，都是utf8编码，有的时候匹配出的乱码还不一定一样，有的时候能匹配出所需内容，但是后面却多了一个乱码，但有时连所需内容都没匹配出来， 最令人不明白的是，在x86环境下，代码没有任何问题，试验过无数次，也不会出现乱码的情况

user: user-2
content: windows和linux的默认字符集不一样吧？

user: user-3
content: sqlite默认是utf8编码的

user: user-4
content: 对电脑而言没有乱码，只有二进制字节；对人脑才有乱码。啊 GBK:0xB0 0xA1,Unicode-16 LE:0x4A 0x55,Unicode-16 BE:0x55 0x4A,UTF-8:0xE5 0x95 0x8A
user-0 提问: C语言新手问题 

回复:
user: user-1
content: char** space_Malloc(char **mabuff,const int buffsize ,const int size) {     int count;     char *temcp;     char **temmabuff;      if (mabuff == NULL || buffsize <= 0 || size <=0)     {         temmabuff = EOF;         printf("Error_space : %d\n",temmabuff);         return temmabuff;     }      temmabuff = mabuff;     for (count=0; count<buffsize; count++)     {         temcp = temmabuff[count] = (char *)malloc(sizeof(char)*size);         if (temcp == NULL)         {             count--;             for (; count>0; count--)             {                 free(temmabuff[count]);                 temmabuff[count] = NULL;             }             temmabuff = EOF;             printf("Error_malloc : %d\n",temmabuff);             return temmabuff;         }         temmabuff[count][0] = '\0';     }      return temmabuff; }
user-0 提问: linux下main函数的参数是在栈里还是在堆里

回复:
user: user-1
content: 请参考《CSAPP》中第8章 异常控制流，有图片显示告诉你，char ** agrv和char ** env保存在栈上，且在main函数栈之前，agrv和env指向一个以NULL为结尾的char*数组，数组中每一个值都指向一个字符串。 以上char*数组和字符串都是在栈中，且在mian函数栈前。

user: user-2
content: int argc, char **argv, char **env 这三个是在栈中 *argv 也许在栈中，毕竟程序员自己也可用用 alloca 分配栈上内存 **argv 在命令行参数 或者命令行参数某个copy的存储位置   env 与此雷同

user: user-3
content: 堆是由你手动分配释放的

user: user-3
content: 当然是在栈里

user: user-4
content: 栈里，地址就很说明问题

user: user-5
content: 在环境中。

user: user-6
content: LZ的截图已经能够说明问题了。 ch是在栈上的，argc/argv/env三个参数的地址离它不远。

user: user-7
content: ls的解释似乎合理

user: user-8
content: main的形参肯定是栈上呀，要不退出main之后岂不是内存泄露了
user-0 提问: 学C++不久 有些错误不懂 求大神解答 错误C4113 

回复:
user: user-1
content: LRESULT CALLBACK WndProc(HHWND,UINT,WPARAM,LPARAM);

user: user-2
content: 第二行的函数原型 LRESULT CALLBACK WndProc(HHWND,WPARAM,LPARAM); 与后面的函数定义参数个数不同

user: user-0
content: 。。。我不知道怎么改 而且是什么问题也不清楚。。

user: user-3
content: 淡定点,这是警告,不是错误, 检查一下11行是什么
user-0 提问: 求助帮我看看关于一元二次方程的程序

回复:
user: user-1
content: #include <stdio.h> #include <math.h> void main() {     double a,b,c;     scanf("%lf%lf%lf",&a,&b,&c);          if (b*b-4.0*a*c <0.0) printf("无实根\n");     else if (b*b-4.0*a*c==0.0) printf("%.4g\n%.4g\n", -b                   /2.0*a, -b                   /2.0*a);     else                       printf("%.4g\n%.4g\n",(-b+sqrt(b*b-4.0*a*c))/2.0*a,(-b-sqrt(b*b-4.0*a*c))/2.0*a); }

user: user-2
content: 引用 2 楼 kid_0203 的回复:引用 1楼user-3 的回复:main，不是 mian我改了之后结果仍然错误，，，  #include <stdio.h> #include <math.h> void main() { 	float a,b,c; 	scanf("%f%f%f",&a,&b,&c); 	if(b*b-4*a*c<0) 		printf("无实根\n"); 	if(b*b-4*a*c==0) 		printf("%.4f\n%.4f\n",-b/2*a,-b/-2*a); 	if(b*b-4*a*c>0) 		printf("%.4f\n%.4f\n",(-b+sqrt(b*b-4*a*c))/2*a,(-b-sqrt(b*b-4*a*c))/2*a); } 没问题呀，输入的时候每次输入一个数之后回车

user: user-0
content: 引用 1楼user-3 的回复:main，不是 mian我改了之后结果仍然错误，，，

user: user-3
content: main，不是 mian
user-0 提问: VS2015中if...ese if语句

回复:
user: user-1
content: 这是C/C++最基本的语法，怎么可能会不支持，但你要了解清楚怎么用 比如else的话你只能放在最后，且后面不跟小括号，表示前面情况都不满足，就执行此处

user: user-2
content: #include <stdio.h> #include <math.h> void main() {     double a,b,c;     scanf("%lf%lf%lf",&a,&b,&c);          if (b*b-4.0*a*c <0.0) printf("无实根\n");     else if (b*b-4.0*a*c==0.0) printf("%.4g\n%.4g\n", -b                   /2.0*a, -b                   /2.0*a);     else                       printf("%.4g\n%.4g\n",(-b+sqrt(b*b-4.0*a*c))/2.0*a,(-b-sqrt(b*b-4.0*a*c))/2.0*a); }

user: user-3
content: 最后一个分支理论上来讲都最好都用else。如果你用if else，那可能会有漏掉的未处理的分支

user: user-4
content: 可以的啊    。。。

user: user-5
content: 当然可以用 else ... ，你为什么会认为不能？

user: user-6
content: else 后面不能有小括号

user: user-7
content: 可以支持的，VS只是集成环境，这些规则是C/C++语言规定的。if else if 在这两个工具中是一模一样的。
user-0 提问: C语言报错（单链表，不超过50行）    急

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

user: user-2
content: while(d && (locate != d->date)) {        d = d->next; }

user: user-3
content: 跟踪代码调试自己就能找到错误的

user: user-4
content: 逻辑有点问题，帮你改了下main函数   void main(){     int locate;     int datas;     NODE *c, *d;     c = create();     d = c->next;     printf("请输入插入位置\n");     scanf("%d", &locate);     NODE* tail = NULL;     while (d && locate != d->data){         tail = d;         d = d->next;     }     if (d == NULL){         printf("%d不存在\n",locate);     }     else{         printf("请输入数据：");         scanf("%d", &datas);         insert(tail, datas);         printf("改变后的链表：");         while (c->next!= NULL){             c = c->next;             printf("%d ", c->data);          }     } }
user-0 提问: 寻求帮助呀！！！C++，为什么会出现如图的错误！？error C4700: 使用了未初始化的局部变量“current”“e”“prev”	??

回复:
user: user-1
content: 引用 4 楼 wang268218 的回复:current = (ST *)malloc(sizeof(ST)); 这不是相当于初始化current了吗??? 干任何事都是要讲究先后次序的。

user: user-0
content: current = (ST *)malloc(sizeof(ST)); 这不是相当于初始化current了吗???

user: user-2
content: 非局部变量不需要初始化的原因是，编译器已自动帮你完成了初始化。

user: user-2
content: 局部变量使用前必须初始化，因为当局部变量被第一次使用时，程序将无法正确判断该变量的值。

user: user-3
content: if (NULL == Head)         Head = current; //不初始化你就赋值，它里面都是垃圾数据啊     else         prev->Next = current; 其他的同上，一样的错误
user-0 提问: C语言关于指向字符串的指针数组的问题求助，求高手！

回复:
user: user-1
content: 不过前提是指针数组应该有所指向，如char str[9][100]; char *str_add[9]; for(i=0;i<10;++i){str_add[i]=str[i];}

user: user-1
content: 引用 2楼我是你的主体 的回复:我试了下把void add的都写到main里面，还是出现同样的问题……  引用 1 楼 weixin_30460121 的回复:因为add是局部变量，当执行add()函数时，将add的地址赋给str_add，函数执行完毕后，该地址所指向的内存即背释放，所以第二次printf的时候，前面的指针指向的内容已发生变化你把void add()里面的内容全写在main()里面的话，虽然char add[100]才被调用后其内存不会释放，但你每次执行str_add[sum_add]=add时，其实是每次都只是把add的地址赋给指针str_add了，这样一来，相当于指针数组里面所有的指针都指向同一个地址add，所以printf出来的都是最后一次输入的值，你可以把str_add[sum_add]=add改成 strcpy(str_add[sum_add],add)

user: user-2
content: #include <stdio.h> void add(int sum_add, char* str_add) {     printf("\ntext?");fflush(stdout);     scanf(" %99s", str_add); }  int main(int argc, char* argv[]) {     char str[9][100];     int sum = 0;     while (1)     {         add(sum, str[sum]);         sum++;         for (int i = 0; i < sum; ++i)         {             printf("%s\n", str[i]);         }         if (sum>=9) break;     }     getchar();     return 0; } // //text?1 //1 // //text?22 //1 //22 // //text?333 //1 //22 //333 // //text?4444 //1 //22 //333 //4444 // //text?55555 //1 //22 //333 //4444 //55555 // //text?666666 //1 //22 //333 //4444 //55555 //666666 // //text?7777777 //1 //22 //333 //4444 //55555 //666666 //7777777 // //text?88888888 //1 //22 //333 //4444 //55555 //666666 //7777777 //88888888 // //text?999999999 //1 //22 //333 //4444 //55555 //666666 //7777777 //88888888 //999999999 //

user: user-3
content: char add[100]，这个add数组是个局部变量，每次函数调用完毕之后，都会被销毁。即使你保存了地址，其实该地址所指向的内容已经被释放了。其实你保存的只是一个野指针，很危险。之所以你说覆盖了之前的内容，其实是你调用add函数时，分配给add数组的地址是相同的。所以你str指针数组中保存的内容其实都是同一个地址，而这个地址中的内容又被你每次更新了。你在char add[100];后面加一句printf（“%d”,(unsigned int)add);看一下 什么都清楚了。我表达能力有限。

user: user-4
content: 引用 2 楼 u012395902 的回复:我试了下把void add的都写到main里面，还是出现同样的问题……  引用 1 楼 weixin_30460121 的回复:因为add是局部变量，当执行add()函数时，将add的地址赋给str_add，函数执行完毕后，该地址所指向的内存即背释放，所以第二次printf的时候，前面的指针指向的内容已发生变化  add = malloc(100);

user: user-0
content: 我试了下把void add的都写到main里面，还是出现同样的问题……  引用 1 楼 weixin_30460121 的回复:因为add是局部变量，当执行add()函数时，将add的地址赋给str_add，函数执行完毕后，该地址所指向的内存即背释放，所以第二次printf的时候，前面的指针指向的内容已发生变化

user: user-1
content: 因为add是局部变量，当执行add()函数时，将add的地址赋给str_add，函数执行完毕后，该地址所指向的内存即背释放，所以第二次printf的时候，前面的指针指向的内容已发生变化
user-0 提问: 指针的引用传参错误，大神帮忙看看

回复:
user: user-0
content: ...傻了，谢谢，我这是不懂脑子的结果

user: user-1
content: #include <stdio.h> void test(int **p2) {     static int a =1;     *p2 = &a;     printf("*p2=%p\n",*p2); } int main() {     int * p1 = NULL;      test(&p1);     printf("p1=%p,*p1=%d\n",p1,*p1);     return 0; }

user: user-2
content: C++ 语言里面才有引用，C 语言没有
user-0 提问: 如何把采集到的声音保存为wav？编的程序不能实现实时，求指导

回复:
user: user-1
content: 传到上位机保存呗

user: user-0
content: 引用 4 楼 paschen 的回复:参看：http://www.oschina.net/code/snippet_6981_5361看了以后觉得挺底层的，有点不懂

user: user-0
content: 引用 3 楼 zhao4zhong1 的回复:其实我也不熟悉。只知道这个库处理音频很厉害。不然Record Anything软件也不会用它了。这个我看过后不是很理解，我再看看，感觉不太适用于lab windows

user: user-2
content: 参看：http://www.oschina.net/code/snippet_6981_5361

user: user-3
content: 其实我也不熟悉。只知道这个库处理音频很厉害。不然Record Anything软件也不会用它了。

user: user-0
content: 本来是用cvi实现这样的功能的，自动对采集到的时域数据进行处理并调用计算机声卡进行播放，但一直没思路，只好先保存，再播放。这个可以用bass库吗，不太熟悉这个库  引用 1 楼 zhao4zhong1 的回复:使用BASS库？ https://www.baidu.com/s?wd=bass%E5%BA%93&rsv_spt=1&rsv_iqid=0xf93197f600011445&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=0&oq=bass&rsv_t=c40ewHsRMdRTjlYkJ6QqmdRqWIThwPNirbRq4A1SoS6e5%2FaEwicCk92hyHzj9xmHFU3l&rsv_pq=f5ff69d9000102ab&rsv_sug3=11&rsv_sug1=7&inputT=22757&rsv_sug4=22757   本来是用cvi实现这样的功能的，自动对采集到的时域数据进行处理并调用计算机声卡进行播放，但一直没思路，只好先保存，再播放。这个可以用bass库吗，不太熟悉这个库

user: user-3
content: 使用BASS库？ https://www.baidu.com/s?wd=bass%E5%BA%93&rsv_spt=1&rsv_iqid=0xf93197f600011445&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=0&oq=bass&rsv_t=c40ewHsRMdRTjlYkJ6QqmdRqWIThwPNirbRq4A1SoS6e5%2FaEwicCk92hyHzj9xmHFU3l&rsv_pq=f5ff69d9000102ab&rsv_sug3=11&rsv_sug1=7&inputT=22757&rsv_sug4=22757