Mxode/CSDN-C_Language-2013_2023 huggingface dataset:
user-0 提问: vs2013无法编译问题，代码没错QWQ

回复:
user: user-1
content: 清理工程重新编译。。。

user: user-2
content: $ cat t.c && gcc t.c && ./a.out #include <stdio.h> #include <limits.h> #include <float.h>  int main(void) { 	printf("Some number limits for this system: \n"); 	printf("Biggest int: %d\n",INT_MAX); 	printf("Smallest unsiged long: %lld\n", LLONG_MIN); 	printf("One byte = %d bits on this system.\n",CHAR_BIT); 	printf("Largest double: %e\n",DBL_MAX); 	printf("Smallest normal float: %e\n",FLT_MIN); 	printf("float precision = %d digits\n",FLT_DIG); 	printf("float epsilon = %e\n",FLT_EPSILON); 	return 0; }  Some number limits for this system:  Biggest int: 2147483647 Smallest unsiged long: -9223372036854775808 One byte = 8 bits on this system. Largest double: 1.797693e+308 Smallest normal float: 1.175494e-38 float precision = 6 digits float epsilon = 1.192093e-07

user: user-3
content: 加上 #include "stdafx.h"

user: user-4
content: 和cpp文件预编译头有关系吧，查查

user: user-5
content: 引用 9 楼 sinat_33223640 的回复:[quote=引用 8 楼 paschen 的回复:] printf("float precision = %d digits\n"，FLT_DIG);  你用成中文下的逗号了，要英文的  改了，现在是英文的还是不行[/quote]  那不可能，什么错误

user: user-0
content: 引用 8 楼 paschen 的回复:printf("float precision = %d digits\n"，FLT_DIG);  你用成中文下的逗号了，要英文的  改了，现在是英文的还是不行

user: user-5
content: printf("float precision = %d digits\n"，FLT_DIG);  你用成中文下的逗号了，要英文的

user: user-0
content: 引用 4 楼 wang0635 的回复:把FLT_DIG前面的中文逗号改了  对不起聚聚QWQ我错了

user: user-0
content: 引用 4 楼 wang0635 的回复:把FLT_DIG前面的中文逗号改了 那个就是英文逗号。。。

user: user-0
content: 这次虽然没有错误，但还是无法编译

user: user-3
content: 把FLT_DIG前面的中文逗号改了

user: user-6
content: 看错误提示，先把错误改过来~

user: user-0
content: 引用 1 楼 hzk745 的回复:FLT_DIG,这个宏定义在哪里呢？  这个不是包含在float.h里面么

user: user-7
content: FLT_DIG,这个宏定义在哪里呢？
user-0 提问: main函数return的时候报出异常

回复:
user: user-1
content: 引用 2 楼 uestczshen 的回复:[quote=引用 1 楼 user-1 的回复:] 你把堆破坏了，下面这个访问Result越界了   	for(_Int64 i=0; i!=10; i++) 	{ 		if(i==0) 		{ 			Result[i] += A[digit-1] * (MSB-1); 			for(_Int64 j= (digit-2); j>=0; j--) 			{ 				Result[j] += A[j] * 9; 			} 			continue; 		} 		Result[i] += A[digit-1] * MSB; 		if(i<MSB) 			Result[i]+=hehe; 	} 确实是，Result[j] += A[j] * 9;应该是Result[i] += A[j] * 9;谢谢了；话说堆被破坏了是什么意思？[/quote]  你Result[不是动态分配的内存空间吗，你越界操作了，把一些数据覆盖了，下一次需要动态分配（printf中）就出错了

user: user-0
content: 引用 1 楼 user-1 的回复:你把堆破坏了，下面这个访问Result越界了   	for(_Int64 i=0; i!=10; i++) 	{ 		if(i==0) 		{ 			Result[i] += A[digit-1] * (MSB-1); 			for(_Int64 j= (digit-2); j>=0; j--) 			{ 				Result[j] += A[j] * 9; 			} 			continue; 		} 		Result[i] += A[digit-1] * MSB; 		if(i<MSB) 			Result[i]+=hehe; 	} 确实是，Result[j] += A[j] * 9;应该是Result[i] += A[j] * 9;谢谢了；话说堆被破坏了是什么意思？

user: user-1
content: 你把堆破坏了，下面这个访问Result越界了   	for(_Int64 i=0; i!=10; i++) 	{ 		if(i==0) 		{ 			Result[i] += A[digit-1] * (MSB-1); 			for(_Int64 j= (digit-2); j>=0; j--) 			{ 				Result[j] += A[j] * 9; 			} 			continue; 		} 		Result[i] += A[digit-1] * MSB; 		if(i<MSB) 			Result[i]+=hehe; 	}
user-0 提问: 关于结构体数组的问题

回复:
user: user-1
content: “多一少一”问题占程序员常犯错误的10%以上！ 避免“多一少一”问题的方法之一是将比如<10甚至<5的数代入程序片断，搬手指头心算验证一下程序到底应该写为 x、x-1、x+1中的哪个？ <、<=、==、>、>=中的哪个？

user: user-0
content: 其实我晚上出去转了一圈回来就想出来了，那天真是脑子太乱了。

user: user-2
content: customer1  SampleCountCst[15]; 下标是0~14的，for(int i=0;i<20;i++)中是i<20,所以到SampleCountCst[15]已经越界了。 customer1  SampleCountCst[15];定义大于20即可
user-0 提问: 不知为何  总是错 新人求指点

回复:
user: user-1
content: 不知你说的总是错是什么意思，至少你贴出来的代码和结果没错啊

user: user-2
content: 用赵老师的方法，改改再试试

user: user-3
content: static int a[100][700],b[100][700],c[100][700];  在占用内存空间较大的局部数组声明的前面加static将其从堆栈数据段挪到全局数据段即可避开因局部数组大小超过默认堆栈大小1MB造成程序不能正常运行的问题。

user: user-2
content: 貌似没什么问题~

user: user-4
content: 没有负值给x,若要运行程序的人自行选择加或减，则在if语句前加scanf("%c",&x);若两个都要求则去掉if语句

user: user-5
content: 哪里报错了？ 运行了一下可以的
user-0 提问: 输出字符串问题，请指点

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

user: user-2
content: 25行修正：  I Am A Child.

user: user-2
content: 修改：  #include <stdio.h> #include <string.h> #include <ctype.h> int main(void){ 	int i, isWord; 	char str[100]; 	while (gets(str)){ 		i = 0; 		isWord = 1; 		while (str[i]) { 			if (str[i] == ' ') { 				isWord = 1; 			} 			else if (isWord == 1 && isalpha(str[i])) { 				str[i] = toupper(str[i]); 				isWord = 0; 			} 			i++; 		} 		printf("%s\n", str); 	} 	return 0; } //i am a child. //I am A child. //are you ok? //Are You Ok?

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

user: user-4
content: 在continue;语句前一句加i++;

user: user-5
content: do while 比较合适处理这种情况

user: user-6
content: 加一条判定，遇到空格且下一个字母是小写才执行。 if(a[i]==' '&&a[i+1]>='a'&&a[i+1]<='z')

user: user-7
content: 当i=1的时候 遇到空格执行if里面的操作，此时b2变成大写跳出循环～但是下个循环会覆盖b2的值，而且如果单词首字母为大写的话运行会出错
user-0 提问: c程序不能运行 。 求人帮忙

回复:
user: user-1
content: 代码本身没有问题~

user: user-2
content: 在VC界面tools->option->direction找到目录设置，具体的找一下百度，有介绍Excutable Fils、Include Files、 Library Files、Source Files路径的位置

user: user-3
content: Visual C++ 2010 Express简体中文版http://pan.baidu.com/s/1bnwRVLt

user: user-4
content: 找不到complier，VC6通常放在...\VC98\Bin里，如果还是不行，重新安装下IDE

user: user-5
content: 路径问题，VC找不到编译器（cl.exe）。在VC界面tools->option->direction找到目录设置，重新设置一下Excutable Fils、Include Files、 Library Files、Source Files路径……
user-0 提问: 在for循环中输入输出char型的字符串数组出现的问题

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

user: user-2
content: 可以在调试时，在return 0;处下断点。

user: user-2
content: 你的声明char l[3]; 只有两个位置（除去结束符），当然不能输入2个以上长度的字符串。  解决方法： 可以给多一点空间 或不要超过预设空间大小。

user: user-0

user: user-0
content: 我的意思是定义char[3],然后每次输入长度为3 的字符串是不行的，一输入长度为3的字符串程序就终止了。我现在已经明白了，必须定义长度大于3的字符串，谢谢你了。

user: user-3
content: #include<iostream> using namespace std; int main() { 	int n, m; char l[3]; 	cin >> n; 	for (int i = 0; i < n; i++) { 		cin >> l; 		cout << l << endl; 	} 	getchar(); 	return 0; }

user: user-4
content: int main(){ 	int n,m;char l[3]; 	cin>>n; 	if (n > 3) 	{ 		n =3; 	} 	for(int i=0;i<n;i++){ 		cin>>l[i]; 		cout<<l<<endl; 	}  	system("pause"); 	return 0; }   嘻嘻~~~ 我要分~~~
user-0 提问: linux下C语言popen调用命令问题

回复:
user: user-1
content: 引用 3 楼 junbao1127 的回复:[quote=引用 2 楼 zhao4zhong1 的回复:] 将普通应用程序放在后台运行或隐藏窗口运行。 什么意思？我那个服务就是守护进程了已经[/quote] centos我不熟，我是说WIndows下的服务程序和普通应用程序差别很大。 如果centos不是和windows一样，服务程序和普通应用程序在station0、权限、交互、启动、暂停、退出、……等各方面差别很大的话，当我没说。

user: user-0
content: 引用 2 楼 zhao4zhong1 的回复:将普通应用程序放在后台运行或隐藏窗口运行。 什么意思？我那个服务就是守护进程了已经

user: user-1
content: 将普通应用程序放在后台运行或隐藏窗口运行。

user: user-1
content: 我个人从来不自寻将普通应用程序转换为服务的烦恼。
user-0 提问: C语言程序怎样转换成windows能直接运行的文件

回复:
user: user-1
content: 安装tc  ctrl+f5

user: user-2
content: 估计是哪里复制的代码想坑人的吧？

user: user-3
content: 楼主是能写出这段代码怎么会不知道？

user: user-4
content: 去找个 Turbo C ， 然后敲进去，编译执行下，就会生成个EXE文件了。

user: user-5
content: 先编译，再链接就可以了
user-0 提问: 编写自定义函数，删除字符串中指定下标n的字符 

回复:
user: user-1
content: 另外你试着把 scanf("%d",&n); gets(s); 改成 scanf("%d",&n); rewind(stdin); gets(s); 试试，如果不行的话，你最好把问题现象描述一下。

user: user-1
content: 加了一个rewind(stdin)测试正常， 环境是vs2015,不支持gets，换成了scanf，输出结果符合你的要求，你的delete_n函数没看 #include<stdio.h> #include<string.h> void delete_n(char s[100], int n) { 	int i; 	for (i = 0; i<strlen(s); i++) 	{ 		if (i == (n - 1)) 		{ 			for (; i<strlen(s); i++) s[i] = s[i + 1]; 		} 	} 	for (i = 0; i<strlen(s); i++) printf("%c", s[i]);   } void main() { 	int n; 	char s[100]; 	scanf("%d", &n); 	scanf("%s",s); 	delete_n(s, n); }

user: user-2
content: int main() { 	int n; 	char s[100];  	scanf("%d",&n); 	getchar(); //接收掉回车产生的'\n' 	gets(s); 	delete_n(s,n);  }

user: user-3
content: 引用 3 楼 user-4 的回复:gets(s); 前加上 getchar(); 吃掉前面scanf剩下的 '\n' 也可以。 原因：用scanf 输入时，最后的 '\n' 仍保留在输入流中，紧随其后的 gets 就只得到了一个空串 说的对·~~~ 我试了 是这样的·~~  #include<iostream> using namespace std;  void delete_n(char s[100],int n) { 	int i; 	for(i=0;i<strlen(s);i++) 	{ 		if(i==(n-1)) 		{for(;i<strlen(s);i++) s[i]=s[i+1];}  	} 	for(i=0;i<strlen(s);i++) printf("%c",s[i]);  }   int main(){ 	int n; 	char s[100];  	scanf("%d",&n); 	getchar(); 	gets(s); 	delete_n(s,n);   	system("pause"); 	return 0; }

user: user-4
content: gets(s); 前加上 getchar(); 吃掉前面scanf剩下的 '\n' 也可以。 原因：用scanf 输入时，最后的 '\n' 仍保留在输入流中，紧随其后的 gets 就只得到了一个空串
user-0 提问: 请大神给些好入们的C语言的资料

回复:
user: user-1
content: K&R的《The_C_Programming_Language》 《C专家编程》

user: user-2
content: 完成课后所有习题。

user: user-3
content: 看看。。。收集点资料。。。

user: user-4
content: 《C Primer Plus》是很好的入门资料，但更好的是《C语言程序设计:现代方法(第2版) 》

user: user-5
content: 《深入理解C指针》这本书不错，当当或者亚马逊都有。 《C语言点滴》 《C语言课程设计案例精编》

user: user-6
content: 了解了C语言基础后，看下C指针：http://blog.csdn.net/zhangxiangdavaid/article/details/37885275 ^-^

user: user-7
content: 链接: http://pan.baidu.com/s/1pKp7YMR 密码: c3th 这是我学C时的资料，分享给你，请尽快提取。

user: user-8
content: 《C Primer Plus》入门时候用的就是这个。不仅有基础，还有后续需要学习的东西。内容很充实

user: user-9
content: 《C语言入门经典》 《C Primer Plus》 我觉得应该学好而不是为了“好学”，我学习用的C Primer Plus

user: user-10
content: C语言教程（附带C语言100例）http://download.csdn.net/detail/zhao4zhong1/8830817

user: user-0
content: 好吧

user: user-11
content: 先买本基础的书静下心来看
user-0 提问: 求大神帮我看看，为什么这个函数会被执行三次？我没有写循环啊

回复:
user: user-0
content: 引用 3 楼 zhouxiaofeng1021 的回复:其他地方有没有调用啊？找到了，前面有个地方还调用了warning这个函数= =

user: user-1
content: 其他地方有没有调用啊？

user: user-1
content: 引用 楼主 xp_xiaopang 的回复:int warning() { 	int chs=0; 	printf("You weapon is + %d now,do you want to continue?\n",weapon); 	printf("1-Of course!I'm lucky!\n"); 	printf("2-No,It's enough!\n"); 	scanf("%d",&chs); 	if (chs==1)  //用户输入继续强化时，判断当前weapon的值并执行相应值的操作 	{ 		if (weapon<3) 		{ 			one_Three(); 		} 		if (weapon<6) 		{ 			four_Six(); 		} 	} 	else if (chs==2) 	{ 		return 0; 	} 	return 0; } int four_Six() { 	printf("哈"); 	return 0; } 当我的weapon<6的时候执行four_Six这个函数，但是为什么他会给我输出三次“哈” 这里没有 输出3次哈

user: user-2
content: 别的地方还有输出吗？代码逻辑上是不会出现循环的
user-0 提问: socket代码问题

回复:
user: user-0
content: 已经成功了  才知道跟外网通讯 要开路由器映射跟DMZ主机  但是想知道 如果不开的话 通过什么方法 可以访问外网？

user: user-1
content: 了解一下软件WinGate的用法。

user: user-2
content: 在本机上可以通讯，说明功能是正常的。 发送给别人不能通讯是什么问题，你是服务器端还是客户端？ 跟踪调试一下具体什么情况
user-0 提问: 关于C语言函数指针赋值的问题

回复:
user: user-0
content: 引用 1 楼 zhao4zhong1 的回复:对函数指针类型楼主就不会用强制类型转换了？你好，我这个函数指针在结构体里面，我如何进行强制类型转换呢？还有我只是参数不同，函数指针类型相同的

user: user-1
content: 引用 4 楼 paschen 的回复:引用 2 楼 jiajian517074779 的回复:[quote=引用 1 楼 zhao4zhong1 的回复:] 对函数指针类型楼主就不会用强制类型转换了？你好，我这个函数指针在结构体里面，我如何进行强制类型转换呢？还有我只是参数不同，函数指针类型相同的  参数类型不同，函数就不同，函数指针类型就不同！typdef一个需要类型的函数指针xxx，然后可以(xxx)aaa可以将aaa类型转成xxx类型 [/quote] 就是啊  STD LIB 里面很多类型都是这样干的

user: user-2
content: 引用 2 楼 jiajian517074779 的回复:引用 1 楼 zhao4zhong1 的回复:对函数指针类型楼主就不会用强制类型转换了？你好，我这个函数指针在结构体里面，我如何进行强制类型转换呢？还有我只是参数不同，函数指针类型相同的  参数类型不同，函数就不同，函数指针类型就不同！typdef一个需要类型的函数指针xxx，然后可以(xxx)aaa可以将aaa类型转成xxx类型

user: user-3
content: 函数参数不同，对应的函数指针类型也不同。

user: user-3
content: 对函数指针类型楼主就不会用强制类型转换了？
user-0 提问: (新手)关于socket ip地址等问题

回复:
user: user-1
content: 引用 楼主 Unixb 的回复:想问下 一个ip地址对应多个端口吗？  不然你只有一个IP，系统怎么知道发来的数据应该发到哪一个程序  第二个问题：  https://www.baidu.com/s?wd=netstat%20%E6%9F%A5%E7%9C%8B%E7%AB%AF%E5%8F%A3%E6%98%AF%E5%90%A6%E8%A2%AB%E5%8D%A0&rsv_spt=1&rsv_iqid=0xc74dee1e00001306&issp=1&f=3&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=monline_3_dg&rsv_enter=1&rsv_sug3=20&rsv_sug1=12&rsv_sug2=0&prefixsug=netstat%20%E6%9F%A5%E7%9C%8B%E7%AB%AF%E5%8F%A3%E6%98%AF%E5%90%A6&rsp=0&rsv_sug7=100&inputT=8027&rsv_sug4=8028

user: user-0
content: 新手 学到这里 实在是对IP和端口 有点懵 麻烦大神帮忙解释下
user-0 提问: 抓包软件算法流程，求大神赐教！！！！

回复:
user: user-1
content: 用libpcap公共库，至于里面的函数怎么用，query by yourself

user: user-2
content: winpcap和WireShark都是开源的。

user: user-3
content: 先把基础知识打好了，特别网络编程是必须要了解的
user-0 提问: 帮忙完成一个函数定义调用

回复:
user: user-1
content: void sort(int *a1,int *a2,int *a3) { 	int m[3]; 	m[0] = *a1; 	m[1] = *a2; 	m[2] = *a3;  	int i, j; 	for(i = 0; i < 2; i++) 	{ 		for(j = 0; i + j < 2; j++) 		{ 			if(m[j] > m[j + 1]) 			{ 				int temp = m[j]; 				m[j] = m[j + 1]; 				m[j + 1] = temp; 			} 		} 	}  	*a1 = m[0]; 	*a2 = m[1]; 	*a3 = m[2]; }
user-0 提问: devc++编译器启动显示;编译器在设置验证过程中,发现存在以下问题

回复:
user: user-1
content: 我也出现过一样的问题，现在已经解决了，你可以参考一下   如图，单击“工具”->“编译选项”   如图，将“目录”选项中的“库”选项中的内容删掉，就可以了，我这个就是已经删完之后的截图。  之后再打开Dev的时候就没有这个提示了

user: user-2
content: 引用 2 楼 u010558449 的回复:这个太大了,就是想用devc++,学习够用了, 因为devc++的调试功能太弱，所以学习不够用。  理解和讨论之前请先学会如何观察！  计算机组成原理→DOS命令→汇编语言→C语言（不包括C++）、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言（包括C++）、架构……  对学习编程者的忠告： 多用小脑和手，少用大脑、眼睛和嘴，会更快地学会编程！ 眼过千遍不如手过一遍！ 书看千行不如手敲一行！ 手敲千行不如单步一行！ 单步源代码千行不如单步Debug版对应汇编一行！ 单步Debug版对应汇编千行不如单步Release版对应汇编一行！ 不会单步Release版对应汇编？在你想单步Release版C/C++代码片断的前面临时加一句DebugBreak();重建所有，然后在IDE中运行。（一般人我不告诉他！）  单步类的实例“构造”或“复制”或“作为函数参数”或“作为函数返回值返回”或“参加各种运算”或“退出作用域”的语句对应的汇编代码几步后，就会来到该类的“构造函数”或“复制构造函数”或“运算符重载”或“析构函数”对应的C/C++源代码处。  VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化，这样过一遍不就啥都明白了吗。 对VC来说，所谓‘调试时’就是编译连接通过以后，按F10或F11键单步执行一步以后的时候，或者在某行按F9设了断点后按F5执行停在该断点处的时候。

user: user-0
content: 这个太大了,就是想用devc++,学习够用了,

user: user-2
content: Visual C++ 2010 Express简体中文版http://pan.baidu.com/s/1bnwRVLt
user-0 提问: 关于c语言坐标问题

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

user: user-2
content: 循环判断语句不太对 for(j=0;s[j]<=1000000;j++) 改为 for(j=0;j<=1000000;j++) 还可以进一步改为 for(j=0;j<strlen(s);j++)  另外，s的长度可以再长一两个字节，以防出错。

user: user-2
content: 缓冲区清理略奇怪  scanf("%s",&s); fflush(stdin); 可以改成gets(s)

user: user-2
content: 手机打字不方便，我多发几条  while(scanf("%d",&m)!=EOF) 改为 scanf("%d",&m)  组数只接收一遍，不能反复接收

user: user-3
content: scanf("%s",&s)=>scanf("%s",s),字符串输入不能加&

user: user-4
content: 引用 4 楼 a616179528 的回复:[quote=引用 2 楼 gblhack 的回复:] while (a = getchar() != 0)  这个你的目的是什么  ，而且你没有说明整个程序你要干什么,getchar遗留的换行符也没做处理。  我改成这样还是不行啊 [/quote] for(j=0;s[j]<=1000000;j++)  //数组越界 s[1000000] 的最后一个索引是1000000-1，当j=1000000时条件仍然成立，再次循环就越界了，改成 j<1000000 或者 j<=1000000-1 。比如 s[2]它的元素有s[0]和s[1]，s[2]就越界了。 我以前也用fflush(stdin);清空输入缓冲，但后来有一次不起作用，经查询才知道这个不是标准C定义的，一般情况下可以用getchar接收掉遗留的回车键，更为保险的while(getchar() != '\n') ; 或者 rewind(stdin); 。 当然gets在仅录入字符串的时候应该更适合。

user: user-0
content: 重打一次用gets做，做对了，谢谢大家

user: user-0
content: 上面的错了，这个才是

user: user-0
content: 这个是题

user: user-0
content: 引用 2 楼 gblhack 的回复:while (a = getchar() != 0)  这个你的目的是什么  ，而且你没有说明整个程序你要干什么,getchar遗留的换行符也没做处理。  我改成这样还是不行啊 #include<stdio.h> int main() { 	int x,y,i,m,j; 	char s[1000000];  	while(scanf("%d",&m)!=EOF) 	{ 	 			for(i=1;i<=m;i++) 			{			 				scanf("%s",&s); 				fflush(stdin); 				x=0; 				y=0;  			for(j=0;s[j]<=1000000;j++) 			{ 				if(s[j]=='0') 					break; 				else if(s[j]=='U') 					y=y+1; 				else if(s[j]=='D') 					y=y-1; 			    else if(s[j]=='L') 					x=x-1; 			    else if(s[j]=='R') 					x=x+1; 			} 			printf("(%d, %d)\n",x,y); 			} 	 	}        return 0; }

user: user-5
content: 改成while((a=getchar())!=0)   =优先级没有!=高

user: user-4
content: while (a = getchar() != 0)  这个你的目的是什么  ，而且你没有说明整个程序你要干什么,getchar遗留的换行符也没做处理。

user: user-4
content: 好像没有清空缓冲区
user-0 提问: 求帮忙写详细注释！代码已经可以通过运行，但是不懂。

回复:
user: user-1
content: 引用 2 楼 c1043784804 的回复:[quote=引用 1 楼 user-3 的回复:] 每一行都写注释，一种被虐的感觉，仔细读一下程序吧。 你调试执行一下，自己就理解了，就不用怕被老师问了 程序运行大概知道，毕竟自己敲了两遍，但是细节不懂。我还真想每句都注释，但是发现写不出来...[/quote] 你不是细节不懂，应是基础太差，建议先把基础整明白。

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

user: user-0
content: 引用 1 楼 user-3 的回复:每一行都写注释，一种被虐的感觉，仔细读一下程序吧。 你调试执行一下，自己就理解了，就不用怕被老师问了 程序运行大概知道，毕竟自己敲了两遍，但是细节不懂。我还真想每句都注释，但是发现写不出来...

user: user-3
content: 每一行都写注释，一种被虐的感觉，仔细读一下程序吧。 你调试执行一下，自己就理解了，就不用怕被老师问了
user-0 提问: C语言输入输出问题

回复:
user: user-0
content: 引用 3 楼 user-3 的回复:第一，你的password在循环之后已经指向了字符的结尾、 第二，如果自己都分辨不了优先级就不要写在一个语句里，while(*password++=getch()!='\r') ，!=优先级高于=，你得到的结果其实是bool值 第三，你输入的密码字符串最后应该添加一个'\0',再执行printf("\npassword is:%s\n",password); 再问一个其他的问题： //链表申明 typedef struct _list_head{ struct _list_head *prev; struct _list_head *next; }list_head,*Plist_head;   //结构体申明 typedef struct _MyStruct{ int age; list_head list; }mystruct;  如上链表放在结构体里面，我用下面的方法删除节点会出错，请问怎么释放节点： //删除节点 Plist_head DeleteNode(Plist_head head,int data) {         mystruct *ms=NULL;         Plist_head dNode=FindNode(head,data);         Plist_head bNode=head;           if(dNode==head)             bNode=head->next;//当删除头结点时，把头的后继当表头。         if(dNode)         {             dNode->prev->next=dNode->next;              dNode->next->prev=dNode->prev;             ms=GetAddr(mystruct,dNode,list);//获取结构体首地址               free(ms);//这里有问题，不知道怎么释放该节点以及包含该节点的结构体。             //free(dNode);         }                 else             return NULL;         return bNode; }  其中 #define GetAddr(type,addr,member) \ ((type *)((char *)addr-(unsigned long *)(&((type *)0)->member)))

user: user-1
content: 仅供参考：#include <conio.h> #include <stdio.h> char pw[40]; int i,ch; FILE *f; void main() {     cprintf("\r\nPassword:");     i=0;pw[i]=0;     while (1) {         ch=getch();         if (ch==13 || i>=39) break;         switch (ch) {         case 27:             cprintf("\rPassword: %40s"," ");             cprintf("\rPassword: ");             i=0;pw[i]=0;             break;         case 8:             if (i>0) {                 i--;                 pw[i]=0;                 cprintf("\b \b");             }             break;         default:             pw[i]=ch;             i++;             pw[i]=0;             cprintf("*");             break;         }     }     cprintf("\r\n");     f=fopen("password.txt","w");     fprintf(f,"%s\n",pw);     fclose(f); }

user: user-2
content: #include<stdio.h> #include<conio.h>  int main(int argc, char *argv[]) {  	char *account=(char *)malloc(8); 	char *password=(char *)malloc(6); 	memset(account, 0, 8); 	memset(password, 0, 6);  	printf("Input account:\n"); 	gets(account); 	printf("account is:%s\n",account); 	printf("Input password:\n");  	//输入密码的时候显示* 	char* temp =password; 	int i =0; 	while ( i<5&&(*temp++ = getch()) !='\r') 	 { 		 i++; 		 putchar('*');		 	 } 	 	password[5] = '\0'; 	printf("\npassword is:%s\n",password);     free(account);     free(password);  	system("pause"); 	return 0; }  已经改好了

user: user-2
content: //输入密码的时候显示* while(*password++=getch()!='\r')     putchar('*'); printf("\npassword is:%s\n",password); 代码有问题啊 password 指针位置变了~~~

user: user-3
content: 第一，你的password在循环之后已经指向了字符的结尾、 第二，如果自己都分辨不了优先级就不要写在一个语句里，while(*password++=getch()!='\r') ，!=优先级高于=，你得到的结果其实是bool值 第三，你输入的密码字符串最后应该添加一个'\0',再执行printf("\npassword is:%s\n",password);

user: user-0
content: 引用 1 楼 user-3 的回复:读不懂你问题，把你怎么输错导致错误描述清楚 Sorry! 我的意思是password最后输出的结果不是我输入的结果，是乱码的，想问下是怎么导致的，请帮忙更正，谢谢。

user: user-3
content: 读不懂你问题，把你怎么输错导致错误描述清楚
user-0 提问: 嵌入式系统循环存储5000条日志信息可以用txt文件吗?

回复:
user: user-1
content: 仅供参考：#include <stdio.h> #include <stdlib.h> #include <string.h> #ifdef WIN32     #include <windows.h>     #include <io.h> #else     #include <unistd.h>     #include <sys/time.h>     #include <pthread.h>     #define  CRITICAL_SECTION   pthread_mutex_t     #define  _vsnprintf         vsnprintf #endif //Log{ #define MAXLOGSIZE 20000000 #define MAXLINSIZE 16000 #include <time.h> #include <sys/timeb.h> #include <stdarg.h> char logfilename1[]="MyLog1.log"; char logfilename2[]="MyLog2.log"; static char logstr[MAXLINSIZE+1]; char datestr[16]; char timestr[16]; char mss[4]; CRITICAL_SECTION cs_log; FILE *flog; #ifdef WIN32 void Lock(CRITICAL_SECTION *l) {     EnterCriticalSection(l); } void Unlock(CRITICAL_SECTION *l) {     LeaveCriticalSection(l); } #else void Lock(CRITICAL_SECTION *l) {     pthread_mutex_lock(l); } void Unlock(CRITICAL_SECTION *l) {     pthread_mutex_unlock(l); } #endif void LogV(const char *pszFmt,va_list argp) {     struct tm *now;     struct timeb tb;      if (NULL==pszFmt||0==pszFmt[0]) return;     _vsnprintf(logstr,MAXLINSIZE,pszFmt,argp);     ftime(&tb);     now=localtime(&tb.time);     sprintf(datestr,"%04d-%02d-%02d",now->tm_year+1900,now->tm_mon+1,now->tm_mday);     sprintf(timestr,"%02d:%02d:%02d",now->tm_hour     ,now->tm_min  ,now->tm_sec );     sprintf(mss,"%03d",tb.millitm);     printf("%s %s.%s %s",datestr,timestr,mss,logstr);     flog=fopen(logfilename1,"a");     if (NULL!=flog) {         fprintf(flog,"%s %s.%s %s",datestr,timestr,mss,logstr);         if (ftell(flog)>MAXLOGSIZE) {             fclose(flog);             if (rename(logfilename1,logfilename2)) {                 remove(logfilename2);                 rename(logfilename1,logfilename2);             }         } else {             fclose(flog);         }     } } void Log(const char *pszFmt,...) {     va_list argp;      Lock(&cs_log);     va_start(argp,pszFmt);     LogV(pszFmt,argp);     va_end(argp);     Unlock(&cs_log); } //Log} int main(int argc,char * argv[]) {     int i; #ifdef WIN32     InitializeCriticalSection(&cs_log); #else     pthread_mutex_init(&cs_log,NULL); #endif     for (i=0;i<10000;i++) {         Log("This is a Log %04d from FILE:%s LINE:%d\n",i, __FILE__, __LINE__);     } #ifdef WIN32     DeleteCriticalSection(&cs_log); #else     pthread_mutex_destroy(&cs_log); #endif     return 0; } //1-78行添加到你带main的.c或.cpp的那个文件的最前面 //81-85行添加到你的main函数开头 //89-93行添加到你的main函数结束前 //在要写LOG的地方仿照第87行的写法写LOG到文件MyLog1.log中

user: user-2
content: 可以可以可以可以
user-0 提问: 思路卡卡的，望指出

回复:
user: user-1
content: #include <stdio.h>  int main(void)  {  int i,j,s,n,m,a[80][80];  while(scanf("%d%d",&n,&m)!=EOF)  {  if(n==0&&m==0)  break;  //s=0;  错了  for(i=0;i<n;i++)  for(j=0;j<m;j++)  scanf("%d",&a[i][j]);  for(j=0;j<m;j++)  { s=0; //改在这里  for(i=0;i<n;i++)  s=s+a[j][i];  printf("%d ",s);  }      printf("\n");  }    return
user-0 提问: 求C语言课程设计——选票系统框架！

回复:
user: user-1
content: 引用 3 楼 c1043784804 的回复:[quote=引用 2 楼 paschen 的回复:] 你先自己写，有什么问题把代码发上来 typedef struct xinxi  //定义信息类型结构体  { 	int    num;  //学号  	char   name[10];  //姓名  	int    piao;  //票  	int    numb[6];  //被投人学号  	struct student *head;  //指向投票人信息  	int    use_up;  //票是否用完  }XINXI;  //类名 —— struct xinxi的小名  typedef struct student  //定义 学生类型结构体  { 	XINXI Xinxi;  //学生的信息  	struct student *next;  //指向后继节点的指针  }*STU1,STU; void menushow()  //菜单显示  { 	printf("\t\t\t*********************************************\n"); 	printf("\t\t\t\t\t1.创建学生信息\n"); 	printf("\t\t\t\t\t2.学生投票输入\n"); 	printf("\t\t\t\t\t3.删除\n"); 	printf("\t\t\t\t\t4.查找\n"); 	printf("\t\t\t\t\t5.输出得票最高的6名学生\n"); 	printf("\t\t\t\t\t6.退出\n"); 	printf("\t\t\t*********************************************\n"); 	printf("\t\t\t请输入数字1-6选择您的操作:"); } STU1 initlist(XINXI node )  //初始化链表 { 	STU1 head; 	int i; 	head=(STU1)malloc(sizeof(STU)); 	node.head=NULL; 	node.piao=0; 	node.use_up=0; 	head->Xinxi=node; 	head->next=NULL; 	for(i=0;i<6;i++) 	{ 		node.numb[i] = 0; 	} 	return head; }     这个链表初始化是这样的吗？[/quote]  initlist 参数应该要传入指针，否则你传到函数中的只是一个复制品，你在函数中的修改都是对这个复制品的修改

user: user-0
content: 引用 2 楼 paschen 的回复:你先自己写，有什么问题把代码发上来 typedef struct xinxi  //定义信息类型结构体  { 	int    num;  //学号  	char   name[10];  //姓名  	int    piao;  //票  	int    numb[6];  //被投人学号  	struct student *head;  //指向投票人信息  	int    use_up;  //票是否用完  }XINXI;  //类名 —— struct xinxi的小名  typedef struct student  //定义 学生类型结构体  { 	XINXI Xinxi;  //学生的信息  	struct student *next;  //指向后继节点的指针  }*STU1,STU; void menushow()  //菜单显示  { 	printf("\t\t\t*********************************************\n"); 	printf("\t\t\t\t\t1.创建学生信息\n"); 	printf("\t\t\t\t\t2.学生投票输入\n"); 	printf("\t\t\t\t\t3.删除\n"); 	printf("\t\t\t\t\t4.查找\n"); 	printf("\t\t\t\t\t5.输出得票最高的6名学生\n"); 	printf("\t\t\t\t\t6.退出\n"); 	printf("\t\t\t*********************************************\n"); 	printf("\t\t\t请输入数字1-6选择您的操作:"); } STU1 initlist(XINXI node )  //初始化链表 { 	STU1 head; 	int i; 	head=(STU1)malloc(sizeof(STU)); 	node.head=NULL; 	node.piao=0; 	node.use_up=0; 	head->Xinxi=node; 	head->next=NULL; 	for(i=0;i<6;i++) 	{ 		node.numb[i] = 0; 	} 	return head; }     这个链表初始化是这样的吗？

user: user-1
content: 你先自己写，有什么问题把代码发上来

user: user-2
content: 去不写程序的论坛找！
user-0 提问: C语言，结构体

回复:
user: user-1

user: user-0
content: 可以解释一下我的错误原因么？谢谢！

user: user-2
content: 不能这样为字符数组赋值，你得用strcpy或者strcpy_s  strcpy(b.name ,  "zhang fang");

user: user-3
content: C语言的字符串实际上是char*，除了在定义时可以char* x="123"这样以外，之后不能用类似x="123"的语句来赋值。 string.h里有strcpy()函数可以用。如刚刚的情况可以写成strcpy(x,"123");

user: user-4
content: C语言  Char * 字符串  不能用 等于号赋值  在 MFC 中  CString 类型变量因为 运算符重载  可以 用 等于号赋值。

user: user-5
content: name如果是string类型的话就可以，char类型的数组不能这样赋值

user: user-2
content: 引用 2 楼 dag617712 的回复:可以解释一下我的错误原因么？谢谢！  原因就是不能这样赋值！
user-0 提问: 结构体相关问题

回复:
user: user-0
content: 感谢啊，有点乱，现在清晰了。

user: user-1
content: 直接作为类型使用： //以下两句等价 // struct student* p; PSTU p;  //以下两句等价 // struct student s; STU s;

user: user-2
content: STU 就等价于struct Student PSTU 就等价于struct Student*  你可以直接用他们定义变量等，如 PSTU s;
user-0 提问: 老师要求写的一个  可是只会第一步 后面的怎么办啊 有没有大神愿意帮我一下

回复:
user: user-0
content: 引用 4 楼 paschen 的回复:[quote=引用 3 楼 baidu_33630842 的回复:] [quote=引用 2 楼 paschen 的回复:] 楼主应该先把基础打好啊！   我知道呀~  正在努力呢…………但是这个  真的做不来[/quote]  函数名和返回值void中间要加上一个空格，另外不知你要做什么，帮不到你啊[/quote]  嗯哪 那个我知道  这个是老师给的大概框架…………大神跪求联系方式啊

user: user-1
content: 引用 3 楼 baidu_33630842 的回复:[quote=引用 2 楼 paschen 的回复:] 楼主应该先把基础打好啊！   我知道呀~  正在努力呢…………但是这个  真的做不来[/quote]  函数名和返回值void中间要加上一个空格，另外不知你要做什么，帮不到你啊

user: user-0
content: 引用 2 楼 paschen 的回复:楼主应该先把基础打好啊！   我知道呀~  正在努力呢…………但是这个  真的做不来

user: user-1
content: 楼主应该先把基础打好啊！

user: user-0
content: 先行谢过大神了！

user: user-0
content: 引用 7 楼 pkuzhx 的回复:本来嘛，代写作业就是不合理的要求。 然后你也不说明你要实现什么东西，有什么要求，最少把作业题目贴出来才能有人帮你吧？  大神  ……  我贴出来了   C语言的题目  我知道伸手党可耻  可是真的是没办法了才这样的  我目前会的和我的能力不足以让我做出这道题…… 能不能帮帮我

user: user-0
content: 这是表格内容    商品销售数据处理：利用文件操作函数完成简单的学生信息读入和输出，利用循环算法和结构体数据类型完成查询、计算、输出。 共三个功能：输出原始数据，计算商品种类，输出计算结果

user: user-0
content: 引用 8 楼 user-3 的回复:具体问题都没描述清楚，是让用MFC还是简单的c程序呢？另外自己先把程序写好别人才能给你解答  题目  就是这样的……  还有一个txt文件  要求读取文件的表头和表格内容   我自己写的不好意思往上贴  自觉错误很多…… 也是很没办法了才来论坛问问  我知道伸手党很讨人厌那

user: user-2
content: 本来嘛，代写作业就是不合理的要求。 然后你也不说明你要实现什么东西，有什么要求，最少把作业题目贴出来才能有人帮你吧？

user: user-3
content: 具体问题都没描述清楚，是让用MFC还是简单的c程序呢？另外自己先把程序写好别人才能给你解答

user: user-1
content: 引用 5 楼 baidu_33630842 的回复:[quote=引用 4 楼 paschen 的回复:] [quote=引用 3 楼 baidu_33630842 的回复:] [quote=引用 2 楼 paschen 的回复:] 楼主应该先把基础打好啊！   我知道呀~  正在努力呢…………但是这个  真的做不来[/quote]  函数名和返回值void中间要加上一个空格，另外不知你要做什么，帮不到你啊[/quote]  嗯哪 那个我知道  这个是老师给的大概框架…………大神跪求联系方式啊[/quote]  你先自己把代码写了，有问题可以发来论坛问
user-0 提问: 用高级语言编写和调试一个简单的文件系统，模拟文件管理的工作过程。

回复:
user: user-1
content: fat16是不是行数更少？

user: user-2
content: ext2不到10000行代码，fat32不到8000行

user: user-0
content: 使用C语言编写

user: user-2
content: 把ext2或者fat文件系统改改就出来了，简化一些

user: user-0
content: 操作系统真的没有学好，指针根本不会
user-0 提问: 静态局部变量定义时赋初值问题和定义后赋初值问题

回复:
user: user-1
content: 慢慢看，不着急

user: user-2
content: “变量赋值”和“变量初始化”不是一回事！ “变量赋值”发生在运行期，其写法遵循赋值语法规定。 “变量初始化”发生在编译期或运行期，其写法遵循初始化列表语法规定。

user: user-3
content: 初始化和赋值是不同的概念。

user: user-4
content: 只初始化一次，不是只赋值一次
user-0 提问: 13.12codeblacks中getchar()函数在什么头文件中

回复:
user: user-1
content: man 3 getchar  GETS Section: Linux Programmer's Manual (3 ) Updated: 1993-04-04  --------------------------------------------------------------------------------    NAME fgetc, fgets, getc, getchar, gets, ungetc - input of characters and strings    SYNOPSIS #include <stdio.h>  int fgetc(FILE *stream); char *fgets(char *s, int size, FILE *stream); int getc(FILE *stream); int getchar(void); char *gets(char *s); int ungetc(int c, FILE *stream);     DESCRIPTION fgetc() reads the next character from stream and returns it as an unsigned char cast to an int, or EOF on end of file or error.  getc() is equivalent to fgetc() except that it may be implemented as a macro which evaluates stream more than once.   getchar() is equivalent to getc(stdin).   gets() reads a line from stdin into the buffer pointed to by s until either a terminating newline or EOF, which it replaces with '\0'. No check for buffer overrun is performed (see BUGS below).   fgets() reads in at most one less than size characters from stream and stores them into the buffer pointed to by s. Reading stops after an EOF or a newline. If a newline is read, it is stored into the buffer. A '\0' is stored after the last character in the buffer.   ungetc() pushes c back to stream, cast to unsigned char, where it is available for subsequent read operations. Pushed - back characters will be returned in reverse order; only one pushback is guaranteed.   Calls to the functions described here can be mixed with each other and with calls to other input functions from the stdio library for the same input stream.   For non-locking counterparts, see unlocked_stdio(3).     RETURN VALUE fgetc(), getc() and getchar() return the character read as an unsigned char cast to an int or EOF on end of file or error.  gets() and fgets() return s on success, and NULL on error or when end of file occurs while no characters have been read.   ungetc() returns c on success, or EOF on error.     CONFORMING TO ANSI - C, POSIX.1. LSB deprecates gets().    BUGS Never use gets(). Because it is impossible to tell without knowing the data in advance how many characters gets() will read, and because gets() will continue to store characters past the end of the buffer, it is extremely dangerous to use. It has been used to break computer security. Use fgets() instead.  It is not advisable to mix calls to input functions from the stdio library with low - level calls to read() for the file descriptor associated with the input stream; the results will be undefined and very probably not what you want.     SEE ALSO read(2), write(2), ferror(3), fopen(3), fread(3), fseek(3), puts(3), scanf(3), unlocked_stdio(3)  --------------------------------------------------------------------------------

user: user-2
content: 不可以右键转到定义？ 我是VS下C++开发的，所以~~~
user-0 提问: 0xC0000005: Access violation报错怎么回事？

回复:
user: user-1
content: 崩溃的时候在弹出的对话框按相应按钮进入调试，按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处，看不懂时双击下一行，直到能看懂为止。

user: user-2
content: 我只修改了这部分的bug 其他 我就没有弄了

user: user-2
content: #include<stdio.h> #include<string.h> #include<stdlib.h> #include<time.h>  typedef struct { 	char instring[50]; }Instring; //读取文件个数 void ReadFnum(int &num); //读取文件 bool ReadFile(Instring a[1000],int number);  int _tmain(int argc, _TCHAR* argv[]) { 	int number; 	Instring a[100]; 	memset(a, 0,100*sizeof(Instring)); 	srand((unsigned) time(NULL));  	printf("读取几条数据\n"); 	scanf("%d",&number); 	printf("读取%d条数据\n",number);  	ReadFile(a,number);  	for(int i=0;i<number;i++) 		printf("%s\n",&a[i].instring);  	return 0;  }  //读取文件个数 void ReadFnum(int &num) { 	FILE *op = NULL; 	op=fopen("data.txt","r"); 	if(op==NULL) 	{ 		printf("文件打开失败"); 		return ; 	}  	int i=0; 	int z=0; 	char a[100];  	while(!feof(op)) 	{ 		fscanf(op,"%s\t",&a[z]); 		i++; 	}  	if( op) 	{ 		if ( fclose( op ) ) 		{ 			printf( "The file 'crt_fopen.c' was not closed\n" ); 		} 	} 	num=i; } //读取文件 bool ReadFile(Instring a[1000],int number) {  	FILE *fp = NULL; 	int i = 0; 	int num = 0; 	ReadFnum(num);//得到文件个数  	int n =0;//从第n行开始读数据 	if (num - number >0 ) 	{ 		n=rand()%(num-number);//从第0行到num-1读取文件 	} 	fp=fopen("data.txt","r");  	if(fp==NULL) 	{ 		printf("文件无法打开"); 		return  false; 	}  	for(i=0;i<n;i++)//跳过一行字符串 	{ 		fscanf(fp,"%[^\n]%*c");  	} 	int iread = num - number >0? number:  num; 	for(int z=0;z<iread;z++) 		fscanf(fp,"%[^\n]%*c",a[z].instring);  	if( fp) 	{ 		if ( fclose( fp ) ) 		{ 			printf( "The file 'crt_fopen.c' was not closed\n" ); 		} 	} 	return true;  } 已经改好了 这个错误问题 不过的你的代码BUG真多  提一下： 1 局部变量没有初始化 2 异常情况边缘条件未考虑 3 空指针没有避免

user: user-3
content: 检查文件有没打开成功，检查指针有没有效，必要时单步运行调试，另外如果打开失败不应该继续往下执行

user: user-2
content: if(op==NULL)  printf("文件打开失败");  这个地方 有问题 需要放回 不然后面就是空指针操作 会报内存操作的错误！

user: user-2
content: 引用 1 楼 user-4 的回复:这是我运行时的错误提示，不知第13行的num前为什么要加“&” 加这个表示引用，表示该参数是实参的别名~~~ 这样你就可以改变实参的值~~~

user: user-4
content: 这是我运行时的错误提示，不知第13行的num前为什么要加“&”
user-0 提问: 二进制文件操作问题

回复:
user: user-1
content: 图片怎么可能追加合并呢，流式的还有可能，比如MP3、视频、文本文件。 图片合并要考虑合并后怎么显示，是横向并排，还是竖向排列，高度或宽度不同还要调整适应。真正合并可能要扫描图片每一像素行。或者用BitBlt、StretchBlt等矩形贴图的API。

user: user-2
content: 先用PS手动合并两个图片并保存，再用WinHex软件查看合并后的图片文件长啥样。

user: user-0
content: 引用 2 楼 zhao4zhong1 的回复:电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址； 人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……  推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。  先用PS手动合并两个图片并保存，再用WinHex软件查看合并后的图片文件长啥样。这个我知道，但是要怎么合并呢，是不是像1楼所说的要说明符?

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

user: user-3
content: 每种文件都有文件的类型说明符 比如bmp文件的数据开始是424D表示的意思就是BM，而png文件的开头也有其类型说明，你把两种数据合并，肯定是不对的
user-0 提问: 输入每个学生的姓名和线性代数、通信原理和C语言课程成绩，统计每人的平均值，并按平均值降序排列，输出排列后的名次、姓名、课 想建立一个结构体中的结构体，不会引用

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

回复:
user: user-1
content: 斐波那契数列后面的数字会很大,会溢出,考虑用数组实现

user: user-2
content: http://blog.csdn.net/zyearn/article/details/7878657 编程之美 时间复杂度仅为O(log2 (n))。

user: user-3
content: 你试试你的程序的第8888项是不是 838829894098371439468804747229690725356976196219107085768510672952886395957744819217247674825155311853716036490949688040643395802933352348591747323853150568591637127088381078565265695033420452179647490484620546733147076699427210617469028649252982937401082152145875220190046216227525611892682381849624399007982117938790118564771976412557858086995098759506814397845099541805102141938364982362956136810435126462321595492956120809868185104160165153643640964413149723133083354090177868786028468649050496175661863788308036494249826713322395688096763370746179808893235443486229563784695791325293093421693460031530820121784830309483792317394258480811983261230704072829737523923285817246214792892398754413399209209955718485674395175523287233160591301869918347563030758265648955410005510020050725458411938005489557988232766948642940956539470149850582272863443561242725443474690063018532465519836825649594593596454942831525030467510586206201432335198707556087387055232815893806110680767867069819080196106723394523025417926771240237674888649147941765423943237026156774525574135626489447215925224556594608201920172449457150367196889221412297701727793960155212826278509304492731615801921976284456195895284006920541058427581200598534716613215202850767723903186921738694556044295262394508329665389704145349893982923452096281872967209225073068869101756866698265309485611732961969195143583301234292010554009341467469567390473386659207500767071507250394401599341334687300413467136929992270324635198337479775339716431306245885110604059858506801449544316575666998752123777251284153446180671052704429163896003654260326869549074705770676694592322385990197336542688830328525741306368822486218130000760179475652908040981290001527235706762653441730577549093245601145769226158263407704585166677740858611269109179278810041504719030614902240767201660575668991905677062290773866007292333

user: user-4
content: int  太小 long long 只能计算92 项 usinged long long 93 项

user: user-5
content: 你这是2个程序在一个文件里一起编译？ 网上搜索C语言斐波那契数列，结果一大堆
user-0 提问: 输入一个正整数n，计算1+1/3+1/5+...的前 n 项之和。

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

user: user-1
content: 第二个多加了一项~~~你自己  列几个测试用例 看看吧   n=1的时候 就开始不对了~~~ 逻辑问题~~~

user: user-2
content: 第二段代码循环多加了一个1/21，第一次循环已经计算到1+1/3了，而第一段代码第一次循环只计算了1，第二次才1+1/3

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

user: user-4
content: 第二个多加了一项。计算的是N+1。

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

回复:
user: user-0
content: 改正一下上面的错误加上硬件仿真时  好像获得的数据全是0x00  不对

user: user-0
content: 谢谢啦     这个我改啦  还有一个问题问问你   我可以这样在 LeftDisplay();直接调用这个二维数组吗 加上硬件仿真 感觉不对   麻烦有时间帮我看看  可以吗  再次感谢 下面是部分程序    #include<reg52.h> #define uchar unsigned char  void LeftDisplay();  void  cuncu();	  void   init(); uchar  hanzi[3][32];  void main(void) {        init(); 	 cuncu();	         while(1)              {                      if（k1==0）                     { 	  LeftDisplay();                         }                            } }    uchar cuncu()          //2C04C04里的数据存储到hanzi[3][32]数组里的子函数 {        uchar i,j,p;        p=0;         init();     for(i=0;i<3;i++)  	 {    for(j=0;j<32;j++)    {     hanzi[i][j]=read_add(p);                                 p++;    }  } uchar cuncu() {        uchar i,j,p;        p=0;         init();     for(i=0;i<3;i++)  	 {    for(j=0;j<32;j++)    {     hanzi[i][j]=read_add(p);//这条可以将24C02存储的数据存放到二维数组里吗？                         //然后引用二维数组里的数据，对数据进行操作 ？	         p++;    }  }       void LeftDisplay(void)	//左移,半个字一移 { 	uchar i,j,scan,k; 	for(i=0;i<2;i++)		 	{ 		if(LeftFlag==1)		//K1=0时    该左移标志置1 		{ 			for(k=0;k<speed;k++)	//移动速度 			{ 				scan=0;		//154译码 				if(LeftFlag==1)	//这里同样做处理 				{ 					for(j=0;j<31;j+=2) 					{ 						ST=0; 					                                                              						 						SendByte(hanzi[i+1][j+1]);      这里   我感觉这样直接引用不了这个数组 为什么？					                                                                   						SendByte(hanzi[i+1][j]);               加上硬件仿真时  好像获得的数据全是0xff 不对 						SendByte(hanzi[i][j+1]);             sendByte是发送一个字节的数据子函数 						SendByte(hanzi[i][j]); 						ST=1;	//一个上升沿送数据 						EN=0;	 						P2=scan; 						delay(5); 						EN=1; 						scan++; 					} 				} 				else 				break; 			}

user: user-0
content: 谢谢啦

user: user-1
content: uchar  hanzi[3][32];
user-0 提问: 一道简单的OJ题目  见鬼了  百思不得其解

回复:
user: user-1
content: 楼主和你一样，看了半天没看出来，原来没替换也要返回-1，oj很多题其实就是没描述清楚。。醉了

user: user-2
content: assert(strOutput);  ///如果有可能，加断言 assert(strInput );  ///如果有可能，加断言  if(strOutput == NULL  ){    return -1; } if( strInput == NULL  ){    *strOutput='\0';    return -1; }  因为参数不够，所以最安全的只能是这样了

user: user-3
content: if( strInput == NULL  ) {    *strOutput = '\0';    return -1; }

user: user-4
content: 输入输出是空返回-1, 没有替换也应该返回-1
user-0 提问: 堆排序的实现问题，好多错误···求帮忙改正

回复:
user: user-1
content: 先把语法基础打好了，就算用别人代码起码也看懂是要作什么啊

user: user-0
content: 引用 2 楼 user-2 的回复:还有  H.r[1]<-->H.r[i];不是C/C++的语法~~~   这个是我根据数据结构书上的算法写的···H.r[1]<-->H.r[i];是我在网上查的，也不知道啥意思···· 求大神指点迷津···· 到底该怎么样把算法是现成代码呢？

user: user-2
content: 还有  H.r[1]<-->H.r[i];不是C/C++的语法~~~

user: user-2
content: 你确定这个代码是你写的？ 有很多语法错误 1有些变量没有定义比如 HeapList中的r数组 2.函数定义与函数使用不一致 比如 int* Heap(HeapList &H) 和	HeapSort(H.r[i],i);不一致
user-0 提问: scanf函数输入多个字符串的奇葩问题

回复:
user: user-1
content: 引用 10 楼 coleoptile 的回复:[quote=引用 7 楼 zhao4zhong1 的回复:] 在每个最后不带\n的printf后面加fflush(stdout); 在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin); 另外请检查scanf的返回值。 //请今后要用 int c; scanf("%c",&c); //时，都改为 char s[2]; int c; scanf("%1s",s); c=s[0];  赵老师，您好，前面的三点建议都都很好，确实可以避免无谓的错误， 您的最后一个代码段，显式的取字符串的第一个是不是画蛇添足了？ 经测试，scanf传参%c ，如果输入字符串的话，会自动截取字符串的首字母赋值给字符变量， 您这样做是有其他目的吗？[/quote] 我的目的是自动跳过我想读的那个字符前面的极有可能存在的一个或多个由“空格、Tab字符、回车换行字符”组成的空白间隔字符（串）

user: user-0
content: 引用 7 楼 zhao4zhong1 的回复:在每个最后不带\n的printf后面加fflush(stdout); 在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin); 另外请检查scanf的返回值。 //请今后要用 int c; scanf("%c",&c); //时，都改为 char s[2]; int c; scanf("%1s",s); c=s[0];  赵老师，您好，前面的三点建议都都很好，确实可以避免无谓的错误， 您的最后一个代码段，显式的取字符串的第一个是不是画蛇添足了？ 经测试，scanf传参%c ，如果输入字符串的话，会自动截取字符串的首字母赋值给字符变量， 您这样做是有其他目的吗？

user: user-0
content: 引用 5 楼 lgbxyz 的回复:第二个程序，是因为终端输入字符串\整形 是以空格\tab\回车结束的，所以scanf将空格等作为输入间隔了，忽略了。  第一个程序， 是因为第二个scanf 取到是字符是你输入的空格\tab。因为取字符不像上面说的会有默认的间隔符。  #include <stdio.h> #include <stdlib.h>  int main(void) { 	int c; 	char s1[10]; 	 	scanf("%s%c", s1, &c); //	scanf("%s %c", s1, &c);	//这2个scanf的执行结果是完全不同的 	 	printf("s=%s,c=%d", s1, c); 	system("pause");  	return 0; }  完全赞同“字符不会有间隔符”这句话，间隔符本身就是字符，怎么能间隔开呢， 除非显式说明了，就像你说的这句 scanf("%s %c", s1, &c);	//显式的说明——一空格为分隔符  我刚才有试了下 scanf("%s,%c", s1, &c);	//这样子就可以用','充当分隔符 当然最好的是把字符放前面输入，这样子就不会有任何问题了

user: user-0
content: 引用 4 楼 mydo 的回复:最好发布到C版  不好意思，我对发布规则还不太熟悉，不是发在CSDN > CSDN论坛 > C/C++ > C语言 ，这里吗？

user: user-2
content: 我去 竟然是坟帖，浪费时间。。。

user: user-2
content: 第二个程序，是因为终端输入字符串\整形 是以空格\tab\回车结束的，所以scanf将空格等作为输入间隔了，忽略了。  第一个程序， 是因为第二个scanf 取到是字符是你输入的空格\tab。因为取字符不像上面说的会有默认的间隔符。  #include <stdio.h> #include <stdlib.h>  int main(void) { 	int c; 	char s1[10]; 	 	scanf("%s%c", s1, &c); //	scanf("%s %c", s1, &c);	//这2个scanf的执行结果是完全不同的 	 	printf("s=%s,c=%d", s1, c); 	system("pause");  	return 0; }

user: user-3
content: 最好发布到C版

user: user-1
content: 在每个最后不带\n的printf后面加fflush(stdout); 在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin); 另外请检查scanf的返回值。 //请今后要用 int c; scanf("%c",&c); //时，都改为 char s[2]; int c; scanf("%1s",s); c=s[0];

user: user-0
content: 大概明白了点，空格、回车、tab本身就是字符，所以说用它们来作为字符串和字符的区分在逻辑上是行不通的

user: user-0
content: 修改了下，增加了一个getchar(),用它吸收空格，结果是实现了，可是还是不能理解空格为什么做不了字符串和字符的分隔符 void main() { 	char c; 	char s[10]; 	scanf("%s", s); 	getchar();            //吸收空格 	scanf("%c",&c); 	printf("s=%s,c=%c", s, c); 	system("pause"); }

user: user-0
content: 在接连输入一个字符串，一个字符的情况下，为什么后面的字符没了？ 看输出结果是把空格传入了字符c（scanf以空格、回车、tab为分隔符），分别以回车、制表符测试也都失败了， 但是分别输入两个字符串却可以，蒙圈了
user-0 提问: 定义结构体，输出学生信息。为什么编译时会显示：error:undefine structure 'student'

回复:
user: user-1
content: void stu_input(struct student stu[],const int data);  void stu_output(const struct student stu[],const int data); 写在 struct student  {     int num;     char name[20];     int age;     char sex;     int grd;  }; 之后~~~

user: user-2
content: 把 struct student的结构体定义放在那两个函数申明前面

user: user-3
content: #include＂stdio.h＂  改成  #include <stdio.h>  就算用引号也要用英文的！ prinf("\nage=");  改成：printf("\nage="); getcahr(); 改成 getchar();

user: user-4
content: stu_input和stu_output这两个函数的声明要放到结构体定义的后面，因为这两个函数的参数中用到了Student结构体，而此时还没定义，程序编译肯定会出错！
user-0 提问: C语言：韩信点兵

回复:
user: user-1
content: 韩信点兵，多多益善。

user: user-2
content: 虽然有很多方法可以实现，但是如果可以将效率提高，减少循环，这样的代码无疑更具执行力。学到东西了。。。

user: user-3
content: http://blog.csdn.net/liyinchen808/article/details/8172354 http://wenku.baidu.com/link?url=RBagHvljNLkGkmtxTgjP4Sy_ugFloOvYO4pkU-0SVwzV8Qz9Epzkpj8sbg41at5Nyqx2n6GuTJ4ZzDIti-IRJgPECK0wYeHApp5MrTqskIa  请参考~~~

user: user-4
content: #include<stdio.h> /*可以少用几次循环，只需要(i * 3 + a)==(j * 5 + b)== (k * 7 + c)*/ int main() {     int a, b, c;//队伍的排尾     int k;//七人一排排数      int sum;//总人数           scanf("%d%d%d", &a, &b, &c);     for (k = 1; k < 15; k++){     	sum=k * 7 + c;          if ( ( ( sum - a ) % 3 == 0 ) //判断满足 (i * 3 + a)==(j * 5 + b) 		   && ( ( sum - b ) % 5 == 0 ) //判断满足 (i * 3 + a)== (k * 7 + c) 		    ){               printf("%d", sum);                     return 0;          }       }     printf("%d", -1);     return 0; }结果应该差不多吧，有时间要求的，少用点循环总是好的啦~

user: user-5
content: 直接用中国剩余定理可得答案  (70*a+21*b+15*c)%105

user: user-6
content: 既然总数不小于10应该i从4开始，k从2开始。话说确定是只需要一组输入么？
user-0 提问: linux 下C编程实现  curl 和libcurl

回复:
user: user-0
content: curl_easy_setopt(pEasyHandle, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/43.0.2357.130 Chrome/43.0.2357.130 Safari/537.36");
user-0 提问: 算法课设的两个问题

回复:
user: user-1
content: 引用 2 楼 qq373948560 的回复:二叉排序树问题：设计程序，实现二叉排序树的相关操作。使用二叉链表存储二叉排序树，主要功能有：生成一棵二叉排序树T；计算二叉排序树T的平均查找长度，输出结果；插入元素x，重新计算二叉排序树T的平均查找长度以及统计各结点所在的层次；输入元素x，查找二叉排序树T：若存在含x的结点，则删除该结点；否则输出信息“无x”；判断二叉排序树T是否为平衡二叉树；遍历二叉排序树等；假设二叉排序树中的数据元素为整数，输入时以回车符作为结束标志。 https://www.baidu.com/s?ie=utf-8&f=3&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E4%BA%8C%E5%8F%89%E6%8E%92%E5%BA%8F%E6%A0%91&oq=%E4%BA%8C%E5%8F%89%E6%8E%92%E5%BA%8F%E6%A0%91&rsv_pq=b428401400007490&rsv_t=03bfqbrFCdwwP5aPc6sOkLrZQ6XPGWm0xEnrOBKf1bm%2FmiITuAEYwLKv89k&rsv_enter=0&rsv_n=2&prefixsug=%E4%BA%8C%E5%8F%89%E6%8E%92%E5%BA%8F%E6%A0%91&rsp=0&rsv_sug7=000&inputT=886&rsv_sug4=886

user: user-1
content: 引用 1 楼 qq373948560 的回复:递归替换问题：编写程序，扩展C/C++源文件中的#include指令(以递归的形式)，请以文件名的内容替换如下面的代码行 这个问题 其实就是遇到#include指令时，将#include 的 内容替换#include  不知道题目有没有说 多次嵌套同一个 头文件的事情  #include“filename”   读取filename 替换 这行就可以撒 百度下代码吧

user: user-0
content: 引用 1 楼 qq373948560的回复:递归替换问题：编写程序，扩展C/C++源文件中的#include指令(以递归的形式)，请以文件名的内容替换如下面的代码行 #include“filename”

user: user-0
content: 二叉排序树问题：设计程序，实现二叉排序树的相关操作。使用二叉链表存储二叉排序树，主要功能有：生成一棵二叉排序树T；计算二叉排序树T的平均查找长度，输出结果；插入元素x，重新计算二叉排序树T的平均查找长度以及统计各结点所在的层次；输入元素x，查找二叉排序树T：若存在含x的结点，则删除该结点；否则输出信息“无x”；判断二叉排序树T是否为平衡二叉树；遍历二叉排序树等；假设二叉排序树中的数据元素为整数，输入时以回车符作为结束标志。

user: user-0
content: 递归替换问题：编写程序，扩展C/C++源文件中的#include指令(以递归的形式)，请以文件名的内容替换如下面的代码行
user-0 提问: 打印huffman树的函数,谁能解释下吗？看不懂，怎么递归输出的？

回复:
user: user-1
content: 这不就是二叉树中续遍历的递归算法吗

user: user-2
content: 二叉树的遍历 http://blog.csdn.net/zhangxiangdavaid/article/details/37115355

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

回复:
user: user-1
content: 只看书不累；写代码太累！

user: user-2
content: 只是看书是没有用的 需要理论联系实际~~~ 建议你一边写代码一边学 比如网上下载一些开源的代码~~~ c语言的多着呢 看代码过程肯定有很多不懂 这样就需要查资料呀 等等  能力也提高了一些不~~~ 完全看懂了之后 如果这个项目让你做 你该怎么动手 怎么设计 然后 你自己在做一个类似的 如果你能够做出来~~~ 不也有点成就感~~~ 有点意思不··· 只看书 很无趣的~~~

user: user-3
content: 我觉得自己应该要有个方向，然后向着这个方向学习，我的计划是学完C基础，然后再以一本稍微深入的书加强C技能，然后就学widows程序设计，如果有涉及到其他知识就一块学习，入门之后再学习windows核心编程，同样涉及的其他知识一块学习。每学完一门知识的基础，适当的练习或再看一本稍深入的书。这是根据我的方向拟定的大概的学习路线，至于数据结构算法一类的用到再学，因为不知道什么用，没有兴趣就很难找到成就感，学习动力不大。

user: user-4
content: 数据结构和算法没看就不能算是入门，另外，多看一些开源项目的源代码，多动手实践

user: user-5
content: 《深入理解C指针》这本书不错，当当或者亚马逊都有。 《C语言点滴》 《C语言课程设计案例精编》

user: user-1
content: C语言教程（附带C语言100例）http://download.csdn.net/detail/zhao4zhong1/8830817

user: user-6
content: 同问啊，求大神指教！

user: user-7
content: 不需要再看C语言的书了，去https://leetcode.com/注册个账号，有很多题，可以选择C语言解答，把难度标记为easy的题全过一遍就算入门了
user-0 提问: switch跳过了

回复:
user: user-1
content: 来人啊，上我的哈勃望远镜。

user: user-2
content: 引用 2 楼 zxh707wk 的回复:直接贴代码不方便吗 不如拍照上传方便。

user: user-3
content: 直接贴代码不方便吗

user: user-4
content: 看不清啊，楼主把代码贴出来吧~~~
user-0 提问: C语言怎么读取注册表的内容，怎么把密码写入注册表？

回复:
user: user-1
content: 引用 3 楼 A5435431941 的回复:[quote=引用 1 楼 paschen 的回复:] http://blog.csdn.net/pjz969/article/details/7873553 有没有纯C语言的？[/quote]  一样的，操作注册表都是用WINDOWS API函数，而不是用C++的高级内容

user: user-0
content: 引用 7 楼 pcboyxhy 的回复:[quote=引用 6 楼 A5435431941 的回复:] [quote=引用 5 楼 pcboyxhy 的回复:] 一个config.ini文件就搞定了，不一定需要写到注册表里 能详细帮我讲解下嘛？ [/quote]  直接写文件，不要用注册表[/quote] 如果是自己写在。txt文件的我就会，但我想尝试下写在注册表中的。

user: user-2
content: 引用 6 楼 A5435431941 的回复:[quote=引用 5 楼 pcboyxhy 的回复:] 一个config.ini文件就搞定了，不一定需要写到注册表里 能详细帮我讲解下嘛？ [/quote]  直接写文件，不要用注册表

user: user-0
content: 引用 5 楼 pcboyxhy 的回复:一个config.ini文件就搞定了，不一定需要写到注册表里 能详细帮我讲解下嘛？

user: user-2
content: 一个config.ini文件就搞定了，不一定需要写到注册表里

user: user-3
content: Registry Functions The following functions are used with the registry:        RegCloseKey   RegConnectRegistry   RegCreateKey   RegCreateKeyEx   RegDeleteKey   RegDeleteValue   RegEnumKey   RegEnumKeyEx   RegEnumValue   RegFlushKey   RegGetKeySecurity   RegLoadKey   RegNotifyChangeKeyValue   RegOpenKey   RegOpenKeyEx   RegQueryInfoKey   RegQueryMultipleValues   RegQueryValue   RegQueryValueEx   RegReplaceKey   RegRestoreKey   RegSaveKey   RegSetKeySecurity   RegSetValue   RegSetValueEx   RegUnLoadKey

user: user-4
content: 操作注册表使用的是windows API，自己在msdn里找

user: user-0
content: 引用 1 楼 paschen 的回复:http://blog.csdn.net/pjz969/article/details/7873553 有没有纯C语言的？

user: user-0
content: 有没有纯C语言的？

user: user-1
content: http://blog.csdn.net/pjz969/article/details/7873553
user-0 提问: 随机产生两个0到100的数，随机产生乘号或除法，乘出来的结果不大于100，否则重新生成

回复:
user: user-1
content: x=rand()%100+1;  y=(rand()%100+1)/x*x; 这个地方我觉得我有点问题 x=rand()%100+1; y= rand()%(100/x +1); 可能会好点呢~~~

user: user-0
content: 这个是什么处理方式，本人只学过c++,不懂

user: user-2
content: 这样可以吧？

user: user-3
content: 产生一个随机数后除以100，如果商小于1，则不要这个随机数，重新生成

user: user-4
content: 产生随机数后加个判断，如果乘积大于100，则不要这个随机数，重新生成

user: user-0
content: 新手请指教，那个随机产生的数差不多都是结果大于100的，如何才能使产生的结果小于100
user-0 提问: win32下的 按钮问题

回复:
user: user-0
content: 引用 3 楼 zhouxiaofeng1021 的回复:[quote=引用 1 楼 zhao4zhong1 的回复:] 消息WM_PAINT处理有误。 需要调用setwindospos函数  设置按钮 窗口~~~[/quote]  能具体说说怎么用吗

user: user-0
content: 能具体说说怎么用吗

user: user-1
content: 引用 1 楼 zhao4zhong1 的回复:消息WM_PAINT处理有误。 需要调用setwindospos函数  设置按钮 窗口~~~

user: user-2
content: 为窗口加上WS_CLIPCHILDREN试试

user: user-3
content: 消息WM_PAINT处理有误。