Mxode/CSDN-C_Language-2013_2023 huggingface dataset:
user-0 提问: 帮我看看这个去除字符串中多余空格的程序 为什么输出的是错的

回复:
user: user-1
content: 引用 9 楼 starytx 的回复:定义变量避免和标准库的库名等重复。 仅供参考 void deblank(char *str) { 	if (NULL == str || 0 == strlen(str)) 	{ 		return; 	} 	char *p1 = str; 	char *p2 = str; 	while (*p1 && *p2 ) 	{ 		while (*p2 == ' ') 		{ 			p2++; 		} 		*p1++ = *p2++; 	} 	*p1 = 0; } 星哥不只是会灌水啊！！

user: user-2
content: 定义变量避免和标准库的库名等重复。 仅供参考 void deblank(char *str) { 	if (NULL == str || 0 == strlen(str)) 	{ 		return; 	} 	char *p1 = str; 	char *p2 = str; 	while (*p1 && *p2 ) 	{ 		while (*p2 == ' ') 		{ 			p2++; 		} 		*p1++ = *p2++; 	} 	*p1 = 0; }

user: user-3
content: 我给你调试了，检查到最后一个3的时候，string还是12       3，j是2，然后就往string[j]的地方写了个3，其他的都没管，结果当然是这样。

user: user-4
content: 引用 4 楼 greatkafka 的回复:[quote=引用 2 楼 fengswd 的回复:] 自己调试下再来发帖好不好？ 调试过了[/quote]  多调试 跟踪看看啊，看看你的i，j，string string[i] = '\0';有问题，i改成j

user: user-1
content: string[i] = '\0'; i  写成 j 才是你最初想法吧

user: user-1
content: 你这本来就是这个结果  你只是把第一个空格替换成了最后一个非空格字符 3 所以 123     3 就是你程序的结果

user: user-0
content: 引用 2 楼 fengswd 的回复:自己调试下再来发帖好不好？ 调试过了

user: user-0
content: 引用 1 楼 modyaj 的回复:怎么个错误 大家省得自己运行！ 我输入 12空空空空空空3回车 输出的是 123空空空空空3

user: user-3
content: 自己调试下再来发帖好不好？

user: user-1
content: 怎么个错误 大家省得自己运行！

user: user-5
content: void deblank(char string[]) {     char temp[MAX_LEN] = "\0";  //MAX_LEN 自己根据需要定义     char *string_temp = string;     int i;     while(*string_temp !=0 && i<strlen(string))     {        if(*string_temp != ' ')       {         temp[i] = *string_temp ;         i++;         string_temp ++;       }       else      {         string_temp ++;      }    }    strcpy(string,temp);     puts(string); }  没问题的！！

user: user-6
content: #include <stdio.h> #include <string.h>  char * deblank(char s[]) {     int i, j;      if (s[0] == '\0')         return s;      i = 0;     for (j = 1; s[j] != '\0'; j++)     {         if (s[i] == ' ')         {             if (s[j] != ' ')             {                 s[i++] = s[j];                 s[j] = ' ';             }         }         else         {             i++;         }     }     s[i] = '\0';      return s; }  int main(int argc, char *argv[]) {     char s[1024];          strcpy(s, "abc 123");     printf("[%s]\n", rmspace(s));      strcpy(s, "abc 123 456");     printf("[%s]\n", rmspace(s));      strcpy(s, "abc 123 456 ");     printf("[%s]\n", rmspace(s));      strcpy(s, " abc 123 456 ");     printf("[%s]\n", rmspace(s));      strcpy(s, "");     printf("[%s]\n", rmspace(s));      strcpy(s, " ");     printf("[%s]\n", rmspace(s));      strcpy(s, " a");     printf("[%s]\n", rmspace(s));      strcpy(s, "a ");     printf("[%s]\n", rmspace(s));      return 0; }
user-0 提问: 关于C语言realloc的问题

回复:
user: user-1
content: 引用 2 楼 zhangyuemessi 的回复:搞懂了，不过C的内存指针问题有点复杂，我想问一下，为什么我先用malloc分配一部分内存，再用realloc追加内存就不行呢？记得大学教材里的代码结构就是如此。 不是不可以，是你自己的在result++的时候把指针搞乱了……还有用realloc的时候最好进行错误判断，可能会分配失败……

user: user-0
content: 搞懂了，不过C的内存指针问题有点复杂，我想问一下，为什么我先用malloc分配一部分内存，再用realloc追加内存就不行呢？记得大学教材里的代码结构就是如此。

user: user-1
content: http://www.cplusplus.com/reference/cstdlib/realloc/
user-0 提问: C程序调用C++程序中的函数

回复:
user: user-1
content: 这种需求，通常都是直接将C++中的函数转化为C的函数，否则很麻烦的！！！

user: user-2
content: C调用C++中C++专有特性的函数，这意味着什么？意味着你在维护一个C源代码（注意是源码不是二进制可执行映像），增加其兼容C++的能力。这个思路我认为并不值得提倡。C++提供extern “C”来兼容C的源码或静态库，这叫向后兼容。你要实现的却是向前方兼容，这样往往会伤筋动骨的——不是你的源码伤筋动骨就是编译器伤筋动骨。

user: user-3
content: namespace sig {    extern "C" double A(const double &t);   //这里是声明 }

user: user-4
content: 使用extern "C"，表示一C的方式编译，而不是使用C++编译器

user: user-5
content: 这里有两个问题：一个是namespace，一个是引用t，c代码都不支持吧？ 如果是简单的函数，比如void f(int i); 那就好办了，把这个函数声明加上extern "C"就行： #ifdef __cplusplus   extern "C" {   #endif   void f(int i); #ifdef __cplusplus   }   #endif  为了实现函数重载，c++编译器会把函数的名字加上一些前缀后缀，extern "C"的作用就是告诉编译器不要这么做。
user-0 提问: RSA算法用辗转相除法求私钥d,用C实现

回复:
user: user-1
content: 学习学习，

user: user-2
content: 引用 3 楼 fetag 的回复:[quote=引用 2 楼 zhao4zhong1 的回复:] 需要使用GIMP库进行大整数计算。 又漏底裤了，那是GMP，不是GIMP！GIMP是处理图形的~~[/quote] 在您老面前露（不是漏）底裤，是我的荣幸！

user: user-3
content: 引用 2 楼 zhao4zhong1 的回复:需要使用GIMP库进行大整数计算。 又漏底裤了，那是GMP，不是GIMP！GIMP是处理图形的~~

user: user-2
content: 需要使用GIMP库进行大整数计算。
user-0 提问: 关于随机数 求大神指导

回复:
user: user-0
content: 改成功了，谢谢大神。

user: user-1
content: int a[3];//定义3个随机数 char cOperator;//定义运算符号。 int nResult,nTrue;//定义计算结果、真实结果 srand(time(NULL)); // 让每次产生的随机数都不一样   for(int i=1;i<=3;i++)  //产生10个随机数  -------------- 先发现了这个错误。定义了3个元素的数组，循环里越界访问了

user: user-0
content: 改后试了下，还是不行啊

user: user-1
content: srand(time(NULL)); 放在main开始试试
user-0 提问: 求大神加一下注释！！！关于用C语言实现linux文件处理的

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

回复:
user: user-1
content: 引用 4 楼 csdn_xlb 的回复:问题已经解决， 方案：改掉函数参数的*，例如：InitList(LinkList L)即可通过编译，原因尚未清楚编译通过只是第一步，只说明符合语法要求，还要看运行结果是否正确。

user: user-0
content: 问题已经解决， 方案：改掉函数参数的*，例如：InitList(LinkList L)即可通过编译，原因尚未清楚

user: user-0
content: 谢谢你的回答，但是好像还是不行

user: user-1
content: LinkList代表结构体指针类型，在函数中所有形参是LinkList*类型的变量前都加上*

user: user-0
content: 错误：request for member 'next' in something not a structure or union 请教怎么解决
user-0 提问: C语言如何判断跳转的网页？

回复:
user: user-1
content: 引用 楼主 qq_23396955 的回复:比如我现在已知一个网站 比如www.xxx.com\login.axpx?username=xxx&password=xxx 这样即可得到验证，无需验证码，当密码或用户名错误，则有alert提示用户或密码错误，我如何用c编一个程序，使其遍历username为syyk的用户和密码，使其暴力破解。 用什么函数？ 1.这个网站能这样绕开也够傻的。。 2.不过楼主别开心，一般你尝试个三五次就会把你ban掉的 3.不过你可以尝试下用curl之类的写个代码，构造http头尝试。如你的问题，状态码是301的话就是跳转 4.用chrome可以直接构造http包测试。我们要学会用工具而不是什么都用代码再去实现一遍 5.不过其实不用这么麻烦，你可以找找相应的http测试工具，填入一个范式自动帮你弄 6.别整这些乱七八糟的所谓黑客的玩意了，太low了

user: user-2
content: 用键盘助手就行了。一般的网站都会有这点基础的安全防范。这样的东西想暴力破解基本不可能。

user: user-3
content: 使用libcurl库？
user-0 提问: 关于定于float和double的输出问题

回复:
user: user-1
content: 你的那个只要把 s=(a+b+c)/(1.0/2);改为 s=(a+b+c)/2；就可以了，，

user: user-0
content: 引用 4 楼 baiwei12 的回复:#include <stdio.h> #include <math.h> double Area(float a,float b,float c) { 	double s; 	double p; 	if (a+b>c&&a+c>b&&b+c>a)    //判断3边是否构成三角形 	{ 		p=(a+b+c)/2; 		s=sqrt(p*(p-a)*(p-b)*(p-c));   //调用库函数求三角形面积 		return s; 	} 	else  	{ 		return 0;             //无法构成三角形返回0 	} } int main(void) { 	float a,b,c; 	double ar; 	printf("input three numbers: \n"); 	scanf("%f %f %f",&a,&b,&c);    //输入三角形三边长 	ar=Area(a,b,c); 	if(ar) 	{ 		printf("area=%f\n",ar);      //输入三角形面积 	} 	else 	{ 		printf("it is false!"); 	} 	return 0; } 大神，正确答案固然重要，可是我还是想知道我的问题所在。。

user: user-0
content: [quote=引用 7 楼 baiwei12 的回复:] 将 s=(a+b+c)/(1.0/2);改成 s=(a+b+c)/2；就可以了，，[/quote 这样改的话，输出的值就变成-0.00000了

user: user-0
content: 引用 3 楼 wangjun403 的回复:scanf函数都写错了，这能编译通过？  你居然还能搞出结果 ---------------------------------- 我是用手机软件编程的，，来提问的时候输入错了。。

user: user-1
content: 将 s=(a+b+c)/(1.0/2);改成 s=(a+b+c)/2；就可以了，，

user: user-0
content: 谭老师的编程 #include<stdio.h> #include<math.h> main() { double a,b,c,s,area; a=3.67; b=5.43; c=6.21; s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("a=%f\tb=%f\tc=%f\n",a,b,c); printf("are=%f\n",area); return 0; }

user: user-0
content: 先回复1下3楼，我是用手机软件编程的，，来提问的时候输入错了。。

user: user-1
content: #include <stdio.h> #include <math.h> double Area(float a,float b,float c) { 	double s; 	double p; 	if (a+b>c&&a+c>b&&b+c>a)    //判断3边是否构成三角形 	{ 		p=(a+b+c)/2; 		s=sqrt(p*(p-a)*(p-b)*(p-c));   //调用库函数求三角形面积 		return s; 	} 	else  	{ 		return 0;             //无法构成三角形返回0 	} } int main(void) { 	float a,b,c; 	double ar; 	printf("input three numbers: \n"); 	scanf("%f %f %f",&a,&b,&c);    //输入三角形三边长 	ar=Area(a,b,c); 	if(ar) 	{ 		printf("area=%f\n",ar);      //输入三角形面积 	} 	else 	{ 		printf("it is false!"); 	} 	return 0; }

user: user-2
content: scanf函数都写错了，这能编译通过？  你居然还能搞出结果

user: user-0
content: 当我把 s=(a+b+c)/(1.0/2);改成s=(a+b+c)/2.0时。输出的值是-0.000000 囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧

user: user-0
content: ..我自己试了一下。。自己定义abc的值。为3.0 4.0 5.0 还是输出437.629981。。
user-0 提问: 看了好久都没发现问题，大神帮帮忙。。

回复:
user: user-0
content: 新手，大神多多包涵。。

user: user-0
content: 原来是这样，谢谢大神

user: user-1
content: 楼上正解，楼主太粗心了 PS：scanf中最好用空格分隔

user: user-2
content: if底下那三行要括起来吧

user: user-0
content: 大神来帮帮忙。。
user-0 提问: 关于这段程序中，aver存进的数字为0，为何？

回复:
user: user-0
content: 引用 1 楼 user-2 的回复:输入成绩为 float 所以，  scanf("%d", &p->score[j]);  改为  scanf("%f", &p->score[j]); 对哦，我没看到这个错 ！

user: user-1
content: 给47行打上断点，看看sum的值

user: user-2
content: 输入成绩为 float 所以，  scanf("%d", &p->score[j]);  改为  scanf("%f", &p->score[j]);
user-0 提问: 提问：定义指针数组，想由用户输入字符串，怎么实现。

回复:
user: user-0
content: 引用 7 楼 starytx 的回复:[quote=引用 4 楼 guicaisa 的回复:] size_t是什么作用，，我还没学到这部分。。逐个free掉，是不是这样:  for (i=0; i<3; i++) free(p[i]);size_t是一种自定义的类型，相当于无符号int，不必过多纠结。是这样free的[/quote]  恩，了解了，谢谢你的解答。

user: user-0
content: 引用 6 楼 u012421456 的回复:char * 型变量存储在静态存储区 char [] 型变量存储在堆栈中 所以不能直接输入 一楼的做法可以  谢谢你的解答。

user: user-1
content: 引用 4 楼 guicaisa 的回复:size_t是什么作用，，我还没学到这部分。。逐个free掉，是不是这样:  for (i=0; i<3; i++) free(p[i]);size_t是一种自定义的类型，相当于无符号int，不必过多纠结。是这样free的

user: user-2
content: char * 型变量存储在静态存储区 char [] 型变量存储在堆栈中 所以不能直接输入 一楼的做法可以

user: user-3
content: 引用 4 楼 guicaisa 的回复:[quote=引用 1 楼 starytx 的回复:] 仅供参考，记得用完要逐个free	char *p[3]; 	for (size_t i = 0; i != 3; i++) 	{ 		p[i] = (char*)malloc(sizeof(char)*100);		// 假设每个串不超过100 		scanf("%s" ,p[i]); 	}   size_t是什么作用，，我还没学到这部分。。逐个free掉，是不是这样:  for (i=0; i<3; i++) free(p[i]);[/quote] 楼主写的是对的

user: user-0
content: 引用 1 楼 starytx 的回复:仅供参考，记得用完要逐个free	char *p[3]; 	for (size_t i = 0; i != 3; i++) 	{ 		p[i] = (char*)malloc(sizeof(char)*100);		// 假设每个串不超过100 		scanf("%s" ,p[i]); 	}   size_t是什么作用，，我还没学到这部分。。逐个free掉，是不是这样:  for (i=0; i<3; i++) free(p[i]);

user: user-0
content: 引用 2 楼 u012421456 的回复:你的代码什么样的，贴上来看看，总是报错？什么错，楼主啥也不说，怎么帮忙？难道楼主想帮忙直接给个程序？  我的意思是输入3个字符串，由用户输入，所以我想了，正好刚学了指针数组的方法，就自己写了个char * p[3].然后想输入3个字符串给这个指针数组，但是无论是用scanf还是gets好像不行，不知道该如何正确输入。

user: user-2
content: 你的代码什么样的，贴上来看看，总是报错？什么错，楼主啥也不说，怎么帮忙？难道楼主想帮忙直接给个程序？

user: user-1
content: 仅供参考，记得用完要逐个free	char *p[3]; 	for (size_t i = 0; i != 3; i++) 	{ 		p[i] = (char*)malloc(sizeof(char)*100);		// 假设每个串不超过100 		scanf("%s" ,p[i]); 	}
user-0 提问: 关于sizeof和strlen的用法

回复:
user: user-1
content: 引用 9 楼 adusuccessfully 的回复:在《程序员面试宝典》（第4版）第55到57业对sizeof和strlen有详细的分析：（共有11条之多）  （1）sizeof操作符的结果类型是size_t，它在头文件中的typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。  （2）sizeof是运算符，strlen是函数。  （3）sizeof可以用类型作参数，strlen只能用char*作参数，且必须是以'\0'结尾的。sizeof还可以用函数做参数，比如：  short f(); printf("%d\n",sizeof(f()));   (4)数组作sizeof的参数不退化，传递给strlen就退化为指针。  （5）大部分编译程序在编译的时候就把sizeof计算过了，是类型或者是变量的长度。这就是sizeof(x)可以用来定义数组维数的原因：  char str[20] = "0123456789"; int a = strlen(str); //a=10; int b = sizeof(str);//而b=20;   (6)strlen的结果要在运行的时候才能计算出来，用来计算字符串的长度，而不是类型占内存的大小。  未完~~~~ 请说完撒 说的不错啊

user: user-2
content: 一个是关键字，一个是函数

user: user-3
content: 1、两者是不同的东西，sizeof用法更广 2、sizeof和strlen只有在处理字符串时会有相似点。

user: user-4
content: 在《程序员面试宝典》（第4版）第55到57业对sizeof和strlen有详细的分析：（共有11条之多）  （1）sizeof操作符的结果类型是size_t，它在头文件中的typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。  （2）sizeof是运算符，strlen是函数。  （3）sizeof可以用类型作参数，strlen只能用char*作参数，且必须是以'\0'结尾的。sizeof还可以用函数做参数，比如：  short f(); printf("%d\n",sizeof(f()));   (4)数组作sizeof的参数不退化，传递给strlen就退化为指针。  （5）大部分编译程序在编译的时候就把sizeof计算过了，是类型或者是变量的长度。这就是sizeof(x)可以用来定义数组维数的原因：  char str[20] = "0123456789"; int a = strlen(str); //a=10; int b = sizeof(str);//而b=20;   (6)strlen的结果要在运行的时候才能计算出来，用来计算字符串的长度，而不是类型占内存的大小。  未完~~~~

user: user-5
content: 我给楼主的建议是：这辈子永远都不要用sizeof！

user: user-6
content: 引用 5 楼 JAFFRYKEE 的回复:[quote=引用 4 楼 lovesmiles 的回复:] 这个问题太多人总结过了。 1sizeof是关键字，strlen是函数 2sizeof是在编译时决定的，strlen是运行时计算的 3sizeof是编译器分配给变量的大小，strlen是遇到'\n'时的长度。 4sizeof可以对类型操作，strlen只能对数组或者指针名操作。 strlen好像是遇到'\0'结束[/quote]  笔误，笔误

user: user-7
content: 引用 4 楼 lovesmiles 的回复:3sizeof是编译器分配给变量的大小，strlen是遇到'\n'时的长度。 你确定是遇到 \n ?? 引用 4 楼 lovesmiles 的回复:4sizeof可以对类型操作，strlen只能对数组或者指针名操作。 准确的说 strlen 参数只能是指针 [其他类型也得转换为指针 才可以做参数]

user: user-8
content: 引用 4 楼 lovesmiles 的回复:这个问题太多人总结过了。 1sizeof是关键字，strlen是函数 2sizeof是在编译时决定的，strlen是运行时计算的 3sizeof是编译器分配给变量的大小，strlen是遇到'\n'时的长度。 4sizeof可以对类型操作，strlen只能对数组或者指针名操作。 strlen好像是遇到'\0'结束

user: user-6
content: 这个问题太多人总结过了。 1sizeof是关键字，strlen是函数 2sizeof是在编译时决定的，strlen是运行时计算的 3sizeof是编译器分配给变量的大小，strlen是遇到'\n'时的长度。 4sizeof可以对类型操作，strlen只能对数组或者指针名操作。

user: user-9
content: 参考 http://www.cnblogs.com/carekee/articles/1630789.html

user: user-10
content: 完全不同的两个东西

user: user-11
content: 这两个其实没有多大的联系。sizeof操作符一般用来计算某个类型或对象的大小，比如结构体，类或内置类型。 strlen是函数，专门用来计算字符串的长度，计算方法是从你提供的字符指针开始计算字符个数，直到遇见结束符'\0'。计算字符串长度就用strlen
user-0 提问: 交换函数

回复:
user: user-1
content: 仅供参考#include <stdio.h> #define SWAP(a,b) do ((&(a))!=(&(b)))?((a)^=(b)^=(a)^=(b)):((a)=(a)); while (0) char   *p1="1" ,*p2="2" ; char    c1=1   , c2=2   ; short   s1=1   , s2=2   ; int     i1=1   , i2=2   ; __int64 I1=1i64, I2=2i64; float   f1=1.0f, f2=2.0f; double  d1=1.0 , d2=2.0 ; void main() {     SWAP((int)p1,(int)p2);                printf("char *     %5s,   %5s\n",p1,p2);     SWAP(c1,c2);                          printf("char       %5d,   %5d\n",c1,c2);     SWAP(s1,s2);                          printf("short      %5d,   %5d\n",s1,s2);     SWAP(i1,i2);                          printf("int        %5d,   %5d\n",i1,i2);     SWAP(I1,I2);                          printf("__int64 %5I64d,%5I64d\n",I1,I2);     SWAP(*(int     *)&f1,*(int     *)&f2);printf("float      %5g,   %5g\n",f1,f2);     SWAP(*(__int64 *)&d1,*(__int64 *)&d2);printf("double    %5lg,  %5lg\n",d1,d2);      SWAP(c1,c1);     printf("%d\n",c1); } //char *         2,       1 //char           2,       1 //short          2,       1 //int            2,       1 //__int64     2,    1 //float          2,       1 //double        2,      1 //2

user: user-2
content: //或者 void swap(int& ref1,int& ref2) {     int temp = 0;       temp = ref1;       ref1 = ref2;       ref2 = temp; }   int _tmain(int argc, _TCHAR* argv[]) {     int a = 3;       int b = 4;       swap(a,b);       printf("a = %d,b = %d\n",a,b);       return 0; }

user: user-2
content: void swap(int* p1,int* p2) { 	int temp = 0;  	temp = *p1;  	*p1 = *p2;  	*p2 = temp; }  int _tmain(int argc, _TCHAR* argv[]) { 	int a = 3;  	int b = 4;  	swap(&a,&b);      printf("a = %d,b = %d\n",a,b);      return 0; }

user: user-3
content: temp要用对象，要不谈你这个编译不通过的吧

user: user-4
content: 应该是  void swap(int *p1,int *p2) {     int temp;     temp=*p1;     *p1=*p2;     *p2=temp; }

user: user-5
content: 指针的基本概念，骚年还不太理解啊， tmp是指针，*p1, *p2是int型数据

user: user-6
content: 引用 2 楼 user-7 的回复:void swap(int *p1,int *p2) {     int *temp;     temp=p1;     p1=p2;     p2=temp; } 恩，这种错误用法是很常见的。

user: user-7
content: void swap(int *p1,int *p2) {     int *temp;     temp=p1;     p1=p2;     p2=temp; }

user: user-6
content: 不对，把两个temp前面那个*去掉
user-0 提问: 谁有《数据结构C语言版》的电子书，清华严蔚敏的,Word或txt的,请大家帮下忙

回复:
user: user-0
content: 是doc的么？麻烦请发我邮箱吧，谢谢

user: user-1
content: 我有你要不？

user: user-0
content: pdf转word会乱码的

user: user-2
content: 用pdf转成word可以吧啊

user: user-3
content: pdf格式的要么。。。。
user-0 提问: 局部变量是什么东西？

回复:
user: user-1
content: 在代码块{}里重新定义n并赋值，这是一个局部变量，离开代码块后，n的值回复到这个代码块之前的值... 这样子....

user: user-2
content: 只在这段代码内有效的变量

user: user-3
content: 变量的作用域。 一般不要写同名变量
user-0 提问: 急，求帮忙看看这段程序是什么意思

回复:
user: user-1
content: $ cat a.c  # include <stdio.h>  int main() {     int x, i;     for (i = 1; i <= 100; i++)     {         x = i;         if (++x % 2 == 0)             if (++x % 3 == 0)                 if (++x % 7 == 0)         printf("%d\n", x);     }     printf("\n");     return 0; }  $ ./a 28 70  28能被7整除 28 - 1能被3整除 28 - 2能被2整除
user-0 提问: field xxx could not be resolved

回复:
user: user-0
content: 引用 3 楼 wang0635 的回复:[quote=引用 楼主 qin_lin_sb 的回复:] 我用eclipse+gcc打开一个C工程，代码可以编译连接运行，但eclipse依然报错，error：field "buf_cycle" could not be resolved.  struct inp_par {     ...     int   buf_cycle;             ...          }  buf_cycle变量已经在结构体中定义了, 但是每个引用这个变量的地方都出现上述error。代码的编译连接运行都是正常的。 感觉很奇怪啊，请问这是怎么回事？网上有人说这是eclipse的bug?  大括号后面没有分号吗[/quote]有，我写漏了

user: user-1
content: 引用 楼主 qin_lin_sb 的回复:我用eclipse+gcc打开一个C工程，代码可以编译连接运行，但eclipse依然报错，error：field "buf_cycle" could not be resolved.  struct inp_par {     ...     int   buf_cycle;             ...          }  buf_cycle变量已经在结构体中定义了, 但是每个引用这个变量的地方都出现上述error。代码的编译连接运行都是正常的。 感觉很奇怪啊，请问这是怎么回事？网上有人说这是eclipse的bug?  大括号后面没有分号吗

user: user-0
content: 引用 1 楼 user-2 的回复:是不是符号库没有更新？符号库？怎么更新？

user: user-2
content: 是不是符号库没有更新？
user-0 提问: 我手上有一个传感器的DLL文件和C HeaderFile，要写一个程序读取传感器的数据

回复:
user: user-1
content: 要有DLL接口函数原型，然后就动态加载DLL，调用接口函数

user: user-2
content: 这个只要工程配置好 DLL加载你这个可以动态加载 使用方法和你自己写的c预言代码一样使用 不用担心

user: user-3
content: 参考 http://www.vckbase.com/index.php/wv/1449.html
user-0 提问: 函数定义的bug无法修复，不知道是什么问题！麻烦老师帮看看，谢谢

回复:
user: user-1
content: int sequence_size(sequence_array,length);  这个调用是个错误   int sequence_size(int sequence_array[],int length) {     int i,j,k;     //根据main函数里定义的数组：遍历遍历数组     for (j = 1;j < length;j++)     {         //逐个循环遍历相邻的两个数         for (i = 0;i < length - j;i++)         {             //比较相邻两个数值的大小并进行交换             if (sequence_array[i] > sequence_array[i + 1])             {                 k = sequence_array[i];                 sequence_array[i] = sequence_array[i + 1];                 sequence_array[i + 1] = k;             }         }     }                 } 这个定义了int类型返回值, 却不返回, 严格语法检查时, 也是错的, 你没有返回任何值.

user: user-0
content: 引用 1 楼 zhouqinghe24 的回复:29行  的int 去掉就好了  好了，谢谢！  我粗心了

user: user-2
content: 引用 2 楼 u012061345 的回复:错误提示写的很清楚。  参数列表不指明类型，只能用在函数定义处。  29行是函数声明。所有应该写成：  int sequence_size(int sequence_array[],int length);  呃，看错了，按1楼的办。

user: user-2
content: 错误提示写的很清楚。  参数列表不指明类型，只能用在函数定义处。  29行是函数声明。所有应该写成：  int sequence_size(int sequence_array[],int length);

user: user-3
content: 29行  的int 去掉就好了
user-0 提问: 指针求教。。。

回复:
user: user-0
content: 引用 1 楼 zhouqinghe24 的回复:读取一个字符，但忽略它。不给任何变量赋值  http://bbs.csdn.net/topics/30002899我知道了，谢谢

user: user-1
content: 因为每次读取时会读取到回车 \n  所以这个字符应该是 忽略回车的

user: user-1
content: 读取一个字符，但忽略它。不给任何变量赋值  http://bbs.csdn.net/topics/30002899
user-0 提问: 关于数组元素命名

回复:
user: user-1
content: 我觉得可以这样：枚举变量来表示下标 比如 jack是0 mike是1等等 还有引用是C++中的 map表也可以一个名字对应一个值key-value模式

user: user-2
content: #include<stdio.h> void main() { float i,sum=0,f=1; 	for (i = 1;i<=30;i++) 	{ 		f*=i; 		sum+=f; 	} 	printf("%e",sum); }

user: user-3
content: 数组元素可以通过下标操作来引用，下标就是 [索引]，为什么有这种以字符串做索引的需求？c++标准库的map容器，如果以字符串作为key，就可以采用这种索引来操作，如mp["xxx"] = yyy;

user: user-4
content: 首先你要这样是为了干嘛？要的话也可以的，#define jack 5    arr[jack]，但这样大部分来说就给人一种摸不着头脑的感觉……

user: user-0
content: 7楼说的就是我的意思，多半不可行吧，在C里？也是我异想天开的

user: user-5
content: 引用 1 楼 u013163178 的回复:在c++中是可以的，因为c++中有引用类型 #include<iostream> using namespace std; int main() {   int a[10];   int &jack = a[2];   cin >> jack;   cout << a[2];   return 0; }你没看懂 楼主想要什么  楼主要做的是  arr[jack] = 15;

user: user-6
content: 引用 3 楼 beiguonanjiang 的回复:C中不可以吗？不可以

user: user-7
content: 加下标不是命名，下标是一种运算

user: user-8
content: LZ说的是map吧？

user: user-0
content: C中不可以吗？

user: user-9
content: 楼上说的有道理

user: user-6
content: 在c++中是可以的，因为c++中有引用类型 #include<iostream> using namespace std; int main() {   int a[10];   int &jack = a[2];   cin >> jack;   cout << a[2];   return 0; }
user-0 提问: 由差集求原集的C语言算法实现！

回复:
user: user-1
content: 3 楼分析的不错 由于 0 的存在，确定了最大数 7，也说明所有数字一定在 A 集合中出现 考虑其他数都在 0 ~ 7 之间的话 那么任何一个点将产生两个值( x - 0, 7 - x) 也就是说，集合内必有数据对相加为 7，且必有 N - 2 对（N 是 B 集合数字个数，） A 集合由于排好序了，从两侧找这样的数据对应该很容易 这个我大概想了一下，没有推导论证，但是我感觉找到的数据对不等于 N - 2 的话，集合无解 0 - {2 或5} - {3 或 4} - 7

user: user-2
content: 顶3楼和4楼。

user: user-3
content: 帮顶，可以参考一下摔砝码问题的代码

user: user-4
content: 以下是我遇到这个问题 我会这样来想:特殊情况先不考虑 考虑大致情况   首先观察集合A 你会发现它会是n的平方  这样你就可以确定A是由多少个数组成。（由每个数与自身和其它俩俩相减）    得出由X个数字组成,程序实现很好得出。     之后不难观察出答案是在0点对称。假设取正数，如上例子就是 2 2 3 3 4 5 7   你会发现一定存在一个数大于等于7    题目给出 B的形式最小数是0   得出最大的数字一定为7  得出一定存在数字7 最小的数字一定存在0(题目给出)   根据b1<b2<b3<。。。。。。 得出7会减去其他会出现 X-2个不同的数字，测试数据位X为4则减出的除（0和7）之外设为X1和X2(X1<X2)  观察 2出现2次 3出现俩次推理出  7- X2  7 - X1  X2 -X1  X1-0 必然出现俩个2和俩个3 解方程讨论 程序就是遍历  剩下的就是把一步一步想法变成程序的过程。

user: user-2
content: 帮顶

user: user-0
content: 没人吗？自顶一下！
user-0 提问: 如何求一个大数的阶乘

回复:
user: user-1
content: 补充一句，他们所谓的数组大概指的是高精度运算，自行百度即可，简单来说就是手动模拟列竖式运算

user: user-2
content: #include<stdio.h> #include<string.h> int a[100000]; int main(){     int i,j,t;     int n;     int m;     while(~scanf("%d",&n))     {         t=1;         memset(a,0,sizeof(a));         a[0]=1;         for(i=1;i<=n;i++){             m=0;             for(j=0;j<t;j++){                 a[j]=a[j]*i+m;                 m=a[j]/10;                 a[j]=a[j]%10;                 if(m&&t<=j+1)                    t++;             }         }         for(i=t-1;i>=0;i--)            printf("%d",a[i]);         printf("\n");     }     return 0; }

user: user-3
content: 大数会超过数据类型所能表示的最大范围，使用字符数组保存数据 搜大数乘法算法

user: user-4
content: int不能保存的数字，就用字符串来表示他。 要理解大数阶乘，首先要知道大数加法。举个例子 求100!? 要求100的阶乘，那么就要就要求99的阶乘，让后把99的阶乘累加100 次就可以了，问题转化到了求99的阶乘了，求99的阶乘就需要知道98的阶乘，把98的阶乘累加99次就可以了。。。。。 最终问题转化为求１的阶乘，１的阶乘是１.通过这个方法我们就把乘法运算转化为加法了，不是吗。
user-0 提问: 筛选法求素数，请问这第十行代码是什么意思啊?

回复:
user: user-1
content: 这么乱的代码，你这第十行指的是哪行？别忘了你有这个操作a[j]=0;

user: user-2
content: 在VS2008里面编译正常运行啊，没有错误啊

user: user-3
content: ubuntu 14.04 gcc 编译测试  正常运行了
user-0 提问: 关于c语言中字符串指针赋值的问题

回复:
user: user-1
content: 引用 3 楼 Vanquish_self 的回复:谢谢啊   不过我刚刚改了一下   发现只是那个小于号的问题  改成赋值就可以了    那个传地址不用改，改了反而错了。因为我在函数定义的时候传递是指针，最后返回了，所有形参的值是变了的。   至于那个初始化的问题我一开始也有想到，不过可能是编程习惯不好（惭愧中），一直没有改。但是这里不用初始化也可以通过。 不过还是谢谢啊   那个小于号的问题不是语法错误编译都检查不出来   自己粗心也是醉了 -，-   再次说声谢谢 不过这个符号&  在c语言中的作用  说实话除了或运算我真的不怎么会用  虽然知道在c++中是引用的含义   可是一直也没有搞清楚如果大神了解的话   还请大神多指点指点  嘿嘿  谢啦听人劝吃饱饭。你的问题不仅仅是你发现的小于号改成=号的问题。main里要定义成对象而不是指针（如果是指针就要malloc或者让其指向有效的对象，否则就是野指针），然后通过&取地址传给StrAssign方法。free后要记得将指针置为0，以便之后对指针的判断是有效的。

user: user-0
content: 引用 2 楼 dizuo 的回复:问题很多啊。 int main(){ char*s="i love chian."; HString T; // 定义对象，初始化 T.ch  = 0; T.length = 0;  StrAssign(&T,s); // 传地址 printf("%s\n",T->ch); }   StrAssign中 for(i=0;i<T->length;i++){     	T->ch[i]<c[i]; // 这里时复制，T->ch[i] = c[i];     }  最后记得释放T.ch指针。。。 引用 2 楼 dizuo 的回复:问题很多啊。 int main(){ char*s="i love chian."; HString T; // 定义对象，初始化 T.ch  = 0; T.length = 0;  StrAssign(&T,s); // 传地址 printf("%s\n",T->ch); }   StrAssign中 for(i=0;i<T->length;i++){     	T->ch[i]<c[i]; // 这里时复制，T->ch[i] = c[i];     }  最后记得释放T.ch指针。。。谢谢啊   不过我刚刚改了一下   发现只是那个小于号的问题  改成赋值就可以了    那个传地址不用改，改了反而错了。因为我在函数定义的时候传递是指针，最后返回了，所有形参的值是变了的。   至于那个初始化的问题我一开始也有想到，不过可能是编程习惯不好（惭愧中），一直没有改。但是这里不用初始化也可以通过。 不过还是谢谢啊   那个小于号的问题不是语法错误编译都检查不出来   自己粗心也是醉了 -，-   再次说声谢谢 不过这个符号&  在c语言中的作用  说实话除了或运算我真的不怎么会用  虽然知道在c++中是引用的含义   可是一直也没有搞清楚如果大神了解的话   还请大神多指点指点  嘿嘿  谢啦

user: user-2
content: char*s="i love chian."; 改成char s[]="i love chian."

user: user-3
content: 问题很多啊。 int main(){ char*s="i love chian."; HString T; // 定义对象，初始化 T.ch  = 0; T.length = 0;  StrAssign(&T,s); // 传地址 printf("%s\n",T->ch); }   StrAssign中 for(i=0;i<T->length;i++){     	T->ch[i]<c[i]; // 这里时复制，T->ch[i] = c[i];     }  最后记得释放T.ch指针。。。
user-0 提问: 实在没办法了

回复:
user: user-0
content: 引用 2 楼 zhao4zhong1 的回复:删掉#include <WinUser.h> 或改为#include <winuser.h> 不行，但我找到解决办法了，我不直接新建dll工程，而是建win32控制台工程，然后选择dll，这样就不会出现这个问题了，也不知是不是vs的bug啊

user: user-0
content: 引用 1 楼 u010005508 的回复:函数名前面加个全局作用越标示符(：：）试一下 不行，但我找到解决办法了，我不直接新建dll工程，而是建win32控制台工程，然后选择dll，这样就不会出现这个问题了

user: user-1
content: 删掉#include <WinUser.h> 或改为#include <winuser.h>

user: user-2
content: 函数名前面加个全局作用越标示符(：：）试一下
user-0 提问: 求助！！！

回复:
user: user-0
content: 这个程序本身不是比较输入的数之间的比较吗？我就想弄清楚具体是怎么比较的。。。由i和j的初始值为0，到i=j经过了怎样的过程？

user: user-1
content: 整体一个大循环，输入单个字符，然后j从0开始循环，输入过的字符跟当前的字符比较，如果之前没有这个字符，将这个字符数出来，如果之前已经有这个字符，直接跳出，输入下一个字符进行判断，不知道对你有没有帮助。。。。。

user: user-0
content: 能不能详细解释一下那个for循环，，，刚刚学，，，对循环感到很困惑。。。

user: user-2
content: if(j = i)//这是一个赋值语句，只要i不是０，if就是真 if(j == i)//这是一个逻辑判断，只有当j和i的值相等时候才为真
user-0 提问: db2 bind问题　

回复:
user: user-0
content: 版主在吗？您有办法解决吗？

user: user-0
content: 论坛有哪位朋友能指点下吗？找了很多资料无法解决

user: user-1
content: 貌似这是软件生成的，就算改了感觉以后还会有其他问题
user-0 提问: C语言编译问题

回复:
user: user-1
content: 第一种可执行文件我们一般叫应用程序，第二个你说的操作系统自身的文件一般叫内核映像（Image）。两个文件中真正的执行部分内容——机器码集合，都是由同一个CPU指令集的指令构成的（不考虑交叉编译情形）。两者之间的不同： 1、但正如你自己提到的，应用程序要调用操作系统接口函数，意味着：应用程序依赖内核映像，内核映像是为应用程序服务的，虽然应用程序需要的一些服务并不一定非要转入到内核来完成。 2、在Windows上，内核映像（一般是ntoskrnl.exe）和应用程序在格式上都遵循PE标准，只是真正执行的机器码集合不一样。

user: user-0
content: 引用 1 楼 binaryhead 的回复:[quote=引用 楼主 gscaiyucheng 的回复:] Windows操作系统下，一个简单的C源代码经过编译后生成可执行文件，这个可执行文件是运行在操作系统上的，要调用操作系统提供的接口函数。  我的问题： 拿操作系统来说，无论windows系统还是linux，都是由C语言、汇编或者C++编写的(这里先不管具体用什么语言编写的)，这些操作系统源代码经过编译后就是操作系统文件。 1.那么这些经过编译的操作系统文件里面都是机器码，是cpu指令集吗？ 2.和之前在操作系统环境下编译生成的可执行文件不同是因为编译器的原因吗？  希望有大侠指点一下，非常感谢 我来试图回答高手们不太愿意回答的问题。 1、这些经过编译的操作系统文件里面实际可执行部分内容的确是机器码，但文件还包含其它辅助内容。是CPU指令构成的集合，但不能说是CPU指令集，一般CPU指令集是指CPU所有支持指令的集合。打个比方，汉字集指所有汉字的集合，一个操作系统文件中的机器码的集合对应为一本实际由汉字构成的书。 2、不太明白你第二个问题的意思，倒是有一个相关的问题，我已经在我的博文中做了回答，可参考：http://blog.csdn.net/binaryhead/article/details/41083927[/quote]  第二个问题的意思是： 现在有两种编译后的文件 第一种是在windows操作系统中经过编译的c源代码像.exe文件，也就是可执行文件，它的运行要调用操作系统接口函数 第二种就是用C语言、汇编等编写的操作系统自身，它们也要经过编译 那么这两个编译后的文件有什么不同吗？

user: user-1
content: 引用 楼主 gscaiyucheng 的回复:Windows操作系统下，一个简单的C源代码经过编译后生成可执行文件，这个可执行文件是运行在操作系统上的，要调用操作系统提供的接口函数。  我的问题： 拿操作系统来说，无论windows系统还是linux，都是由C语言、汇编或者C++编写的(这里先不管具体用什么语言编写的)，这些操作系统源代码经过编译后就是操作系统文件。 1.那么这些经过编译的操作系统文件里面都是机器码，是cpu指令集吗？ 2.和之前在操作系统环境下编译生成的可执行文件不同是因为编译器的原因吗？  希望有大侠指点一下，非常感谢 我来试图回答高手们不太愿意回答的问题。 1、这些经过编译的操作系统文件里面实际可执行部分内容的确是机器码，但文件还包含其它辅助内容。是CPU指令构成的集合，但不能说是CPU指令集，一般CPU指令集是指CPU所有支持指令的集合。打个比方，汉字集指所有汉字的集合，一个操作系统文件中的机器码的集合对应为一本实际由汉字构成的书。 2、不太明白你第二个问题的意思，倒是有一个相关的问题，我已经在我的博文中做了回答，可参考：http://blog.csdn.net/binaryhead/article/details/41083927
user-0 提问: 怎样把结构数组初始化为0？

回复:
user: user-1
content: bzero memset

user: user-2
content: 用结构体，定义一个变量，用变量来初始化

user: user-3
content: 赞同九楼的方法

user: user-0
content: 引用 2 楼 snowmagic 的回复:cand[10] = {0} 这个我试了一下，还是只能把第一个结构（各个字段）初始化为0，其他9个结构仍然没有初始化。

user: user-4
content: 干脆设成全局变量好了。 像这么“巨大”的数组栈不一定能装得下

user: user-0
content: 引用 1 楼 runner90 的回复:memset(&cand, 0, sizeof(CAND)); 这个是可以，但我希望在定义的时候初始化。

user: user-5
content: 数组使用memset比较好。其实初始化使用{0}也是使用的memset

user: user-6
content: cand[10] = {0}

user: user-7
content: memset(&cand, 0, sizeof(CAND));

user: user-8
content: 1. 定义成全局的或者static的 2. 用0初始化第一个内部为0，再用这个变量初始化其它的， 类似int aa[2] = {0,aa[0]};

user: user-9
content: 你以后就会在血泪经验中明白调试器就是一个垃圾

user: user-0
content: 引用 10 楼 taodm 的回复:printf/cout看到的才是真实，别太相信调试器。 [quote=引用 8 楼 screen12 的回复:] [quote=引用 7 楼 taodm 的回复:] 楼主用的什么编译器？怎么确认的没有初始化？ VS2008，我是调试的方法确定没有初始化的。因为调试状态下，查看发现cand[0]里面各个变量全部被清为0，但从cand[1]到cand[9]，里面的变量是各种各样的值。因为本来定义的就是局部变量，其值是不确定的。  按照道理讲，初始化第一个结构，后面的都应该清0，结果却不是，令人郁闷。[/quote][/quote] 什么？调试显示的变量值都不一定对？我有点震惊了。

user: user-9
content: printf/cout看到的才是真实，别太相信调试器。 引用 8 楼 screen12 的回复:[quote=引用 7 楼 taodm 的回复:] 楼主用的什么编译器？怎么确认的没有初始化？ VS2008，我是调试的方法确定没有初始化的。因为调试状态下，查看发现cand[0]里面各个变量全部被清为0，但从cand[1]到cand[9]，里面的变量是各种各样的值。因为本来定义的就是局部变量，其值是不确定的。  按照道理讲，初始化第一个结构，后面的都应该清0，结果却不是，令人郁闷。[/quote]

user: user-10
content: struct a {   int a;   int b[10]; } struct a tmp[10]; memset(tmp,0 ,10 * sizeof(struct a));

user: user-0
content: 引用 7 楼 taodm 的回复:楼主用的什么编译器？怎么确认的没有初始化？ VS2008，我是调试的方法确定没有初始化的。因为调试状态下，查看发现cand[0]里面各个变量全部被清为0，但从cand[1]到cand[9]，里面的变量是各种各样的值。因为本来定义的就是局部变量，其值是不确定的。  按照道理讲，初始化第一个结构，后面的都应该清0，结果却不是，令人郁闷。

user: user-9
content: 楼主用的什么编译器？怎么确认的没有初始化？
user-0 提问: C里允许数组动态声明？

回复:
user: user-0
content: To: user-2 多谢多谢！搜了一下果然是允许的。C99新实现的特性。  To: focuslight 是可以的，你可以用新一点的gcc编译一下我那个程序。

user: user-1
content: 应该会报错/..........

user: user-2
content: gcc支持变长数组。楼主自己搜一下”gcc 变长数组“看看
user-0 提问: 总是会出现“error C2144: syntax error : missing ';' before type 'int'”，求大神帮忙

回复:
user: user-1
content: 这是我的部分代码 #include<stdio.h> #include<stdlib.h> #include<string.h> typedef SElemType int;//在这里 #define STACK_INIT_SIZE 100; #define STACKINCREMENT 10; typedef sturct  { SElemType *base; SElemType *top; int stacksize; }SqStack;

user: user-0
content: 谢谢大家热心的回答我这初学数据结构的渣渣

user: user-2
content: 把你的 #define 后面的分号去了！！！

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

user: user-4
content: 引用 2 楼 amber_17 的回复:改了，还是不行，还是出现同样的错误 typedef int  SElemType; 加个分号

user: user-5
content: typedef SElemType int      缺分号 #define STACK_INIT_SIZE 100;    多了分号 #define STACKINCREMENT 10;   多了分号

user: user-6
content: 啧 typedef int SElemType;

user: user-0
content: 改了，还是不行，还是出现同样的错误

user: user-4
content: typedef SElemType int 改成 typedef int  SElemType   自己看错误提示不会么啊？
user-0 提问: 请教链表释放内存问题

回复:
user: user-1
content: 引用 3 楼 mcmay 的回复:不过不知为何C Primer Plus的最后一章中却是按照那种错误的方法释放内存却没有出现运行时的问题。 内存的问题经常是这样的，所谓的“不可预料的结果”，时好时坏，不好复现，最怕的就是这种问题。

user: user-1
content: 一个小问题： getchar()的返回值是int类型，所以dummy也应该是int，特别是要和EOF比较的时候。具体的原因楼主可以自己搜一下"EOF 类型"或者"EOF int“

user: user-1
content: free (temp_ch);             temp_ch = temp_ch->next; temp_ch被free了之后就不能再用了，它所在的内存有可能被操作系统分配给别人然后被修改。 应该这样： next = temp_ch->next; free (temp_ch); temp_ch = next;

user: user-0
content: 引用 2 楼 user-1 的回复:一个小问题： getchar()的返回值是int类型，所以dummy也应该是int，特别是要和EOF比较的时候。具体的原因楼主可以自己搜一下"EOF 类型"或者"EOF int“ 是的，我这一点是忽略了，习惯char了。

user: user-0
content: 引用 1 楼 user-1 的回复:free (temp_ch);             temp_ch = temp_ch->next; temp_ch被free了之后就不能再用了，它所在的内存有可能被操作系统分配给别人然后被修改。 应该这样： next = temp_ch->next; free (temp_ch); temp_ch = next; 我也是这么想的，后来我也改成你建议的办法。谢谢！不过不知为何C Primer Plus的最后一章中却是按照那种错误的方法释放内存却没有出现运行时的问题。
user-0 提问: Linux下通过上下方向键实现查看命令历史

回复:
user: user-1
content: bash是开源的，参考其源代码。

user: user-2
content: readline库是现成的。

user: user-3
content: 历史命令其实就是一个双向链表。  保存每个命令就可以了。 根据你自己的业务需求来做就可以

user: user-0
content: UP
user-0 提问: X:\X\X\x.exe 文件没有找到

回复:
user: user-1
content: 引用 3 楼 user-2 的回复:你把软件关了，然后打开1.h所在的位置，右键，生命名，1.cpp..再用VC打开这错别字。。。 你把软件关了，然后打开1.h所在的位置，右键，重命名为1.c..再用VC打开

user: user-2
content: 你把软件关了，然后打开1.h所在的位置，右键，生命名，1.cpp..再用VC打开

user: user-0
content: 引用 1 楼 zxh707wk 的回复:.h文件？把后缀名改成.c的 不太懂..求怎么改...

user: user-1
content: .h文件？把后缀名改成.c的
user-0 提问: 大一新生，遇到个小问题

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

user: user-0
content: 试过输入数字的，但输入数字后没反应，换成输入字符的就可以，不知道哪错了 #include "stdio.h" void main() { int i,n=10,a[10];   float av=0.00000; for(i=0;i<n;i++) scanf("%d",&a[i]); for(i=0;i<n;i++) { printf("%d",a[i]); if (i%3==0) printf("\n"); } for(i=0;i!=n;i++) av+=(float)a[i]; printf("av=%f\n",av); }

user: user-2
content: 你直接输入数字不就得了，干嘛输入字符啊，这不是多此一举嘛~

user: user-0
content: 运行得了啊。我用的是vc++6.0

user: user-3
content: 大哥，调试过吗？程序都运行不了，void去掉，或改成int

user: user-4
content: 考lz基本语法。。。
user-0 提问: 数据结构二叉树的问题

回复:
user: user-1
content: 传指针是一种恶习 应该传引用。 传指针，需要检查是否为空，传引用就不用了

user: user-2
content: 在栈里就这样写  BiTreePtr  T = (BiTreePtr ) malloc(sizeof(*BiTreePtr)); 然后给两个根子针NULL。这样树根节点就做好了，传给函数子节点想怎么搞就怎么搞。

user: user-2
content: struct node T 就可以传T了，你这传的是变量指针的变量指针，没那个必要。

user: user-3
content: 传指针是一种恶习 应该传引用。 传指针，需要检查是否为空，传引用就不用了

user: user-4
content: 楼上的两位似乎没看明白问题  typedef struct node  {  int data;       struct node *plChild;   struct node *prChild;   }*BiTreePtr;  这里已经出现了一次*，代表已经定义Bitree为指针类型了，但是为什么要再弄个*T呢？ 这是因为如果不写*T，而写T的话，T指向的内容虽然可以改变，但是T不能再指向别的了，也就是指向的位置不可改变 说得明白点，就是101号房间可以住很多人，但是不能变成102房。 所以传入*T，就能修改指向的位置了，使T指向新开辟的内存，不然的话： 0x8a7f614a指令使用的0x08a56de4内存，其值不能为"written" ……

user: user-5
content: 传指针好，你可以修改内容，还可以修改它的指向。按值传递灵活性就没这么好了，我是这么想的

user: user-6
content: 因为我们从来没有定义果一个节点变量，但是我们申请了很多快内存，大小干好符合节点，于是我们认为那写内存就是树的节点，我们操作树的节点就只有用指针，不然用什么
user-0 提问: C语言函数返回值输出乱码

回复:
user: user-1
content: static char str[100]="string-testing";

user: user-2
content: char temp[100];  strcpy( temp, str_catch_test() );

user: user-3
content: 看标题我就知道是返回临时变量。。

user: user-4
content: 干嘛返回局部变量，作死

user: user-5
content: 那怎么解决啊？？？

user: user-0
content: 搞明白了，str为局部变量，返回后被销毁了
user-0 提问: 字符串结尾

回复:
user: user-1
content: \0就是0的转译字符，就是null的转译字符。要问null从哪来的？c库函数在运行开始前都要初始化buff的，用memset将buff清零。除去你填充的字符，剩下都是这东西了。

user: user-2
content: 编译器自带的结束符。

user: user-3
content: 、\0就是自带的啊。。。

user: user-4
content: scanf自己会加上结束符'\0' scanf        s      Matches  a sequence of non-white-space characters; the next pointer must be a pointer to character array               that is long enough to hold the input sequence and the terminating null character ('\0'), which is added               automatically.   The  input  string stops at white space or at the maximum field width, whichever occurs               first.

user: user-4
content: scanf自己会加上结束符'\0' scanf        s      Matches  a sequence of non-white-space characters; the next pointer must be a pointer to character array               that is long enough to hold the input sequence and the terminating null character ('\0'), which is added               automatically.   The  input  string stops at white space or at the maximum field width, whichever occurs               first.

user: user-5
content: #include<stdio.h>  #include<string.h> int main() {     int i;     // your code goes here     char str[100]={'h','e','l','l','\0','o'};     //scanf("%s",str); printf ("%u,%u\n",strlen(str),sizeof str);     return 0; } 若是不想把'\0'打印出来就先计算长度，strlen函数可以计算字符串长度，不包括'\0'在内，如上的程序输出为 4，100

user: user-5
content: 读入的是字符串，在数组中进行存储就是以‘\0’表示字符串结束，你可以试一个对对一个字符数组进行初使化，多加几个‘\0’,用字符串输出，程序是会输出第一个‘\0’之前的数据，因为已经表示字符串结束，如：#include <stdio.h>  int main() {  char a[10] = {'t','e','s','\0','t'};  printf("%s\n",a);  return 0; } 只会输出tes

user: user-6
content: http://www.microsoft.com/visualstudio/chs/downloads#d-2010-express 点开Visual C++ 2010 Express下面的语言选‘简体中文’，再点立即安装  scanf的源代码在C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\input.c

user: user-3
content: 你逗把，，编译器自己就会加啊

user: user-7
content: 当然是自己加的，而且是编译器干的，不是scanf等干的，比如这个被gcc编译后有一段： .LC0: db "%s\n", 0 （好像是则个样子吧……）

user: user-8
content: 看下scanf的汇编，

user: user-9
content: scanf("%s",str);   "%s"本身的意思就是表示读字符串，那字符串以什么结尾？'\0'！！！后面的倒是的确都是乱码值，因为是在函数内的内置类型。
user-0 提问: 这个代码哪有问题输出结果为什么一直是0

回复:
user: user-1
content: while(a) { a=a/10; count++; } //这个循环出来后a的值就是0

user: user-0
content: @707wk

user: user-0
content: @zxh707wk

user: user-0
content: 递归就是简单,可以如果我加一个条件输入的这个数字超过了int的范围,怎么办比如我输入100000000000，如果改成double的话就不能取整了,强制转换也会溢出

user: user-2
content: 仅供参考 #include <stdio.h>  void funiction(int num) { 	if(!num)return ; 	printf("%d",num%10); 	funiction(num/10); }  int main() { 	int num; 	scanf("%d",&num); 	funiction(num); 	return 0; }

user: user-3
content: 写代码 请注意缩进排版  养成好习惯   你贴的这些代码看着太费劲  代码出问题自己查找问题看着都费劲   别人就更没有帮你看然后去帮你的欲望了。。。  PS：倒序可以这么做 PS：提供一个思路:利用数组  #include   <stdio.h> int main() {       int   i,val;       int   a[5];       for(i=0;i<5;i++)       {             scanf("%d",&val);             a[i] = val;       }      for(i=4;i>=0;i--)      {            printf("%d",a[i]);      }      printf("\r\n*************  ^_^ 好好学习 越来越强***************\n");      return 0; }  LZ代码我是实在提不起兴趣看    这里就为你提供了一个新思路吧    代码测试正常。。。。

user: user-4
content: m=a/b; 这个时候a已经不是你输入的a了

user: user-0
content: 就是找出一个数字的倒排数（比如123，输出321,103，输出301）  为什么我的代码一直输出结果是0啊

user: user-0
user-0 提问: 大神帮我看看这个程序 

回复:
user: user-1
content: 把        printf("请输入姓名：\n\n");   修改为    printf("请输入姓名：");

user: user-2
content: fflush(stdin)  刷新输入缓冲区  在两个输入之间调用

user: user-3
content: int number=0,sum=0,i=1,count=0; 	float average; 	char name[10]; 	char choice,choice1;  	printf("这个简单的程序可以计算出你们班学生的平均成绩\n你需要先输入姓名的拼写，然后输入分数！！\n\n请问你要继续吗？（y或者n）"); 	scanf("%c",&choice); 	if(toupper(choice)=='N') 		return 0; 	else 	{ 		printf("请输入你要求平均数的人数："); 		scanf("%d",&count) ;  		for(;i<=count;++i) 		{ 			printf("请输入姓名：\n\n");  			scanf("%s",name);  			printf("请输入该学生对应的分数："); 			scanf("%d",&number); 			printf("%s的分数是%d吗？请确认！！(y或者n)\n",name,number); 			scanf("%c",&choice1); 			if(toupper(choice1)=='N') 			{ 				printf("请再次输入姓名："); 				scanf("%s",name); 				printf("请再次输入该学生对应的分数："); 				scanf("%d",&number); 			}  			else 				sum+=number; 			printf("%s的分数是%d.",name,number); 		} 	} 	average=sum/i; 	printf("\n\n平均成绩是%f",average);

user: user-4
content: 在每个最后不带\n的printf后面加fflush(stdout); 在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin); 另外请检查scanf的返回值。
user-0 提问: [提問]一段小代碼輸出不正確

回复:
user: user-0
content: 引用 5 楼 jack_guanggong 的回复:两种解决方案： 第一种：正确使用scanf_s [quote=引用 1 楼 user-3 的回复:] scanf_s("%c",&ch,1); scanf_s()的写法格式错误 在调用时，必须提供一个数字以表明最多读取多少位字符。 用scanf应该就没事了 第二种： scanf_s不是标准C的内容，是微软为了防止缓冲区溢出漏洞对C标准库的扩展，不想看到警告就加一个 #define _CRT_SECURE_NO_WARNINGS 放在程序最前头  [/quote]謝謝指教!

user: user-1
content: 两种解决方案： 第一种：正确使用scanf_s 引用 1 楼 user-3 的回复:scanf_s("%c",&ch,1); scanf_s()的写法格式错误 在调用时，必须提供一个数字以表明最多读取多少位字符。 用scanf应该就没事了 第二种： scanf_s不是标准C的内容，是微软为了防止缓冲区溢出漏洞对C标准库的扩展，不想看到警告就加一个 #define _CRT_SECURE_NO_WARNINGS 放在程序最前头

user: user-0
content: 引用 3 楼 turingo 的回复:++  [quote=引用 1 楼 user-3 的回复:] scanf_s("%c",&ch,1); scanf_s()的写法格式错误 在调用时，必须提供一个数字以表明最多读取多少位字符。 用scanf应该就没事了[/quote] 你好,如果我使用scanf的話會有警告,無法編譯.,我用的編譯軟件是vs2013

user: user-2
content: ++  引用 1 楼 user-3 的回复:scanf_s("%c",&ch,1); scanf_s()的写法格式错误 在调用时，必须提供一个数字以表明最多读取多少位字符。 用scanf应该就没事了

user: user-0
content: Visual studio2013版中,使用scanf程序無法編譯 ------------------------------------------------------------------------- 错误	1	error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

user: user-3
content: scanf_s("%c",&ch,1); scanf_s()的写法格式错误 在调用时，必须提供一个数字以表明最多读取多少位字符。 用scanf应该就没事了
user-0 提问: 图的深度优先搜索求解答

回复:
user: user-1
content: 图的深度优先遍历啊

user: user-2
content: 看熟了以后这个顺序就跟物理学家眼里的场一样明显。

user: user-2
content: 结合代码看看。

user: user-3
content: 图中的说明不是写得很明白嘛。深度优先遍历。
user-0 提问: C中该怎么把游戏的得分写进文件，下次游戏开始是显示上次的分数，求大神指教！谢谢

回复:
user: user-1
content: 最简单的，像这样a.out<score,输入重定向，

user: user-0
content: 楼上能否说详细点，谢谢

user: user-2
content: fopen fread fclose

user: user-2
content: fopen fread fclose

user: user-3
content: 打开游戏时fopen，游戏中时更新file

user: user-4
content: 可以搜下资料，关于操作文件的。  也就是上面的各种file open。应该能搜索到文件的。
user-0 提问: 各位看看这个程序有什么错？？怎么一运行电脑重启

回复:
user: user-1
content: 原因很简单。 LPTSTR suff=new TCHAR[1024]; 在不断申请内存，但是你没有释放，导致内存耗尽，改起来也很简单，可以在WM_TIMER开始的时候 用TCHAR * suff=new TCHAR[1024]; 在WM_TIMER消息return前使用delete suff[]；
user-0 提问: 问下，这个小白问题，还有微软开源的问题

回复:
user: user-1
content: 引用问下，visual studio 。net开源的问题，对这些c++程序员有啥好处？  是不是得学学那个。net框架了。 asp跟asp。net有啥联系跟区别啊。  .net开源的话， 可以自己定制.net. 需不需就看你需不需定制了，有时间精力的话，可以研究研究。   asp vs asp.net

user: user-1
content: 引用这个可以：int* next = new int[pLen]; 这个到底new出来的是数组么？  new [] 叫array new,  不是数组。

user: user-1
content: 引用int plen = strlen(p);  int next[plen];//这就不行了  C99支持的， 变长数组。

user: user-2
content: 指针就是地址，数组名是一个首地址，相当于常指针，分配一段连续的内存给指针，就相当于数组，只不过这个数组不是常指针而已。这些都是很基础的概念

user: user-3
content: .net和C++没什么关系，除非你打算玩C++/CLI。但学C++/CLI，还不如去学C#。CLI一般就用在C++和C#之间的粘合上

user: user-4
content: 动态数组没有int next[plen]这样的写法，编译器不支持，你可以：  int* next = new int[pLen];   int* next = (int*)malloc(sizeof(int) * pLen);
user-0 提问: signed char的问题请教

回复:
user: user-1
content: 关于无符号数和有符号数，楼主可以搜一下“原码、反码、补码”

user: user-1
content: checksum就是“校验和”，自己搜一下应该能找到很多详细的介绍。 这里的算法很简单，就是把所有输入加起来，结果只保留最低的一个字节。这个字节如果按无符号数来解释就是unsigned char，取值在0~255，0~0xFF。如果按有符号数来解释，就是-128~127，其中最高位是符号位。 无符号 -- 有符号 0 -- 0 1 -- 1 ... 127 -- 127 128 -- -128 129 -- -127 ... 254 -- -2 255 -- -1
user-0 提问: 关于栈与队列的主函数解释

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

user: user-2
content: 引用 1 楼 user-4 的回复:每句？ 定义一个栈 定义一个队列 为栈分配空间 为队列分配空间 清空栈 清空队列 输出：enter train serious: 获取一串字符 输出换行 循环处理每一个字符：如果是 'H' 就入栈，如果不是就入栈再取出来放入队列 循环处理：如果栈中还有东西，取出来放到队列里 输出：new train serious: 循环处理队列：输出队列中的字符 输出换行 厉害！！！

user: user-3
content: void main(void) {     seqstack* st;     sequeue* trainsq;     char ch, trains[MAXSIZE], *p=trains;          /* 为st栈分配足够的空间 */     st = (seqstack*) malloc(sizeof(seqstack));     /* 为trainsq队列分配足够的空间*/     trainsq = (sequeue*)malloc(sizeof(sequeue));     /* 初始化st为空栈 */     setstacknull(st);     /* 初始化trainsq为空队列 */     setseqnull(trainsq);          /* 输入字符串并存放在trains数组中 */     printf("enter train serious:\n");     gets(trains);     putchar('\n');          /* 遍历trains字符串 */     while(ch = *p)     {         /* 如果字符是H，则压入st栈 */            if(ch == 'H')         {             push(st, ch);         }         /* 其它字符放到trainsq队列中，这三条语句的顺序可能是错的 */            else         {             push(st, ch);             ch = pop(st);             encyque(trainsq, ch);         }         p = p + 1;     }          /* 把st栈中剩下的字符依次弹出放到trainsq队列中 */     while(!empty(st))     {         ch = pop(st);         encyque(trainsq, ch);     }          /* 依次打印trainsq队列中的所有字符 */     printf("new train serious:\n");     while(ch = delcyque(trainsq))     {         putchar(ch);     }     putchar('\n'); }

user: user-4
content: 每句？ 定义一个栈 定义一个队列 为栈分配空间 为队列分配空间 清空栈 清空队列 输出：enter train serious: 获取一串字符 输出换行 循环处理每一个字符：如果是 'H' 就入栈，如果不是就入栈再取出来放入队列 循环处理：如果栈中还有东西，取出来放到队列里 输出：new train serious: 循环处理队列：输出队列中的字符 输出换行
user-0 提问: 题目意思

回复:
user: user-1
content: 这个题，意思是从矩阵里的任意一个数字开始移动，每次只能移动到相邻位置且必须比当前位置数值低的位置里，这样移动到移无可移为止。选出最长的那条路径，就是输出路径长度。上面实例从25降到1，路径长度24
user-0 提问: 基类引用派生类的函数

回复:
user: user-1
content: 第二个编译不过的原因是：实现了带参数构造函数，编译器就不会自动增加无参构造函数，实例化C类，就必须带一个int参数。

user: user-2
content: 第一个应该编译不过，A类没有print这个函数 第二个应该也编译不过，编译器分辨不出ntest 到底是C的还是C::A的
user-0 提问: 通过指针移动给某个字符赋值

回复:
user: user-1
content: 你的指针赋值的是一个 复合文字，是一个非符号常量，所以你是不能对这个常量时行修改的，但是你可以创建一个数组，进行赋值，这样得到一个拷贝，对拷贝进行操作再输出就不存在这个问题了，这就是你上面的问题，可能能加C语言复合文字一章

user: user-2
content: 引用 2 楼 turingo 的回复:char *p = "hello"这样声明相当于p是常量指针，其内容不能被修改，改为char p[] = "hello"就好了。 学习了~

user: user-3
content: 学习受教了！

user: user-4
content: char *p="hello"中，hello是常字符串，只可读取，不能进行修改。如果需要修改，需要用字符数组。

user: user-0
content: 谢谢各位的回答，自己又查了一下资料，总结一下：  解决方法1  #pragma comment(linker,"/SECTION:.rdata,RW")，可以使常量区可写，否则，无法修改常量。  解决方法2  char *p = (char *）malloc(10 *sizeof(char)); 解决方法3  char p [] = "hello", 此时在数组p在栈上，然后把hello赋值到栈上，可以读写。  这个问题的原因是没有明白c语言中，指针和数组的区别，以及变量的存储。 char * p = "hello", 右边"hello"，是个字符串常量，存在于常量区，只读不可写，左边指针p，指向字符串常量的地址，可以改变指针的指向。 char p[ ]  = "hello "  ，右边也是个字符串常量，存在于内存常量区，也是只读的。左边是数组，赋值的时候，把字符串hell所在的常量区中的内容，复制到字符数组str中，每复制一个字符，就在栈上分配空间，该空间可以读写。 另外，数组名一个指针常量，不能作自增、自减等操作，不能被修改。

user: user-5
content: 引用 6 楼 liulianglin 的回复:[quote=引用 5 楼 zhao4zhong1 的回复:] #pragma comment(linker,"/SECTION:.rdata,RW") //加这句可以让常量区可写，后果自负！   这样做会不会很危险啊[/quote] 当然危险了！要不然我为啥要说“后果自负”呢？ 比如修改超过原始长度后面的位置时会覆盖后面的其它常量字符串。

user: user-6
content: 引用 5 楼 zhao4zhong1 的回复:#pragma comment(linker,"/SECTION:.rdata,RW") //加这句可以让常量区可写，后果自负！   这样做会不会很危险啊

user: user-5
content: #pragma comment(linker,"/SECTION:.rdata,RW") //加这句可以让常量区可写，后果自负！

user: user-0
content: int main() { 	char *p = "hello"; 	char * cp; 	cp = p; 	*(cp + 3) = 'k'; 	printf("%s\n",p); 	return 0; }  如果char *p = "hello"; p是常量指针的话，那么重新定义一个指针cp，char * cp;让cp指向p，cp = p;然后	*(cp + 3) = 'k'; 也是不行的啊

user: user-7
content: 常量字符串的值是不允许被修改的

user: user-8
content: char *p = "hello"这样声明相当于p是常量指针，其内容不能被修改，改为char p[] = "hello"就好了。

user: user-9
content: "hello"的结果是常量指针，不能更改其内容的。而定义的数组则不是。
user-0 提问: 紧急求助各位大神一个问题！！

回复:
user: user-0
content: 引用 2 楼 zhao4zhong1 的回复:#include <stdio.h>  int  i; FILE *fp;   Slice *currSlice = currMB->p_Slice;     int  i_last = currSlice->idr_flag? 1:cs->no_part;  //<slice的partition,对于IDR是不进行分割的，因此为1，    //########################test################   fp = fopen("E:\\data.txt","w");   fprintf(fp,"%d ",i_last);   fclose(fp);  //########################test################    DataPartition *partArr = &currSlice->partArr[0];   谢谢您的帮助，问题已经解决了~~

user: user-0
content: 引用 1 楼 wwwwpppp628 的回复:从提示信息来看，分明指的是 这句有问题啊。 DataPartition *partArr = &currSlice->partArr[0];  有些语言或者编译器，变量必须要定义在函数开头，不能在中间再定义变量。不知道是不是这个原因，你可以将这句移到你新加的语句钱试试。  非常感谢您的提醒，正如您所说，变量的定义必须在函数开头，我把它提到了前面就可以了~~太感谢了~~

user: user-1
content: #include <stdio.h>  int  i; FILE *fp;   Slice *currSlice = currMB->p_Slice;     int  i_last = currSlice->idr_flag? 1:cs->no_part;  //<slice的partition,对于IDR是不进行分割的，因此为1，    //########################test################   fp = fopen("E:\\data.txt","w");   fprintf(fp,"%d ",i_last);   fclose(fp);  //########################test################    DataPartition *partArr = &currSlice->partArr[0];

user: user-2
content: 从提示信息来看，分明指的是 这句有问题啊。 DataPartition *partArr = &currSlice->partArr[0];  有些语言或者编译器，变量必须要定义在函数开头，不能在中间再定义变量。不知道是不是这个原因，你可以将这句移到你新加的语句钱试试。
user-0 提问: C语言简单的编程 请牛人指出一下错误，新人菜鸟 勿喷

回复:
user: user-0
content: 引用 1 楼 turingo 的回复:a循环每次都要清零：     谢谢牛人！！！感激！！

user: user-1
content: for(i=m;i<=n;i++,a=0)

user: user-2
content: a循环每次都要清零：  #include <stdio.h>  int main(int argc, char* argv[]) {     int m;     int n;     int a;     int b = 0;     int i;     int j;          scanf("%d%d", &m, &n);     for(i = m; i <= n; i++)     {         a = 0;         for(j = 2; j <= i; j++)         {             if((i%j) == 0)             {                 a = a + 1;             }         }         if(a <= 1)         {             printf("%d ",i);             b++;         }     }          if(b == 0)     {         printf("no");     }     printf("\n");          return 0; }
user-0 提问: 对文件的概念

回复:
user: user-1
content: 你说的是逻辑上的文件，书上说的是物理上的文件。

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

user: user-3
content: 顶楼上大神。。。。 PS：建议lz可以看看操作系统原理.....然后就明白鸟

user: user-4
content: 推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。

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

user: user-5
content: 文件就是一块存储的区域。里面存的就是你要的信息。 你说的照片也是存在你硬盘上的。

user: user-6
content: 文件，不管是什么，就是信息。是信息，就得找个地方存储它。那么，存储它的地方就是一块存储区域。对程序而言，文件管理的任务，就是管理这些存储区域，他关心的是这些信息有多大，要占用多少地方，存到哪里去或者从哪里区，而不会管存储的到底是什么玩意儿。

user: user-7
content: 存储区域不就是用来存储信息和数据的吗？

user: user-8
content: 那是逻辑上的说法，或者说通俗的理解，其本质不都是存储在硬盘或内存中的信息吗？
user-0 提问: textbox居中显示怎么弄

回复:
user: user-1
content: 发错地方了。。。

user: user-2
content: 引用 2 楼 CC520xiaoguai 的回复:我把代码改成 <div style="margin:0px auto; ">  居中也不对啊 是让那个文本框居中还是文本框的文字居中啊？ 文本框居中，也就是说包含文本框的容器宽度 100% 才行啊 width 它要是跟文本框一样的宽度，那居中不居中也看不出来

user: user-0
content: 不是这里？

user: user-3
content: 额，你发错帖子了，发错地方了

user: user-0
content: 我把代码改成 <div style="margin:0px auto; ">  居中也不对啊

user: user-2
content: 发错地方了？ TextBox 设置 style="text-align:center;" ？
user-0 提问: 谁能给我指一条路

回复:
user: user-1
content: 多看书，靠老师讲的那些根本不可能懂。

user: user-0
content: 有学习黑客知识的地方嘛 书籍。。

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

user: user-3
content: 从 http://www.pediy.com/ 开始上路。
user-0 提问: 想将字符数组中的数据转换成整型后存入一个新的整型数组中

回复:
user: user-1
content: 这写法好牛！！！if(i%1 == 0 && i) cout << endl;你文本里面是什么样的格式？

user: user-0
content: 谢谢6楼，我再试试

user: user-1
content: 还没弄出来？好吧，仅供参考…… #include <stdio.h> #define MAXLINE 100   int main () {   	int str[MAXLINE + 1];   	FILE * fp;   	int count = 0, i;  	if(NULL == (fp = fopen("abc.txt", "r"))) 	{ 		printf("Open error!\n"); 		return -1; 	}  	 	while(EOF != (fscanf(fp, "%d", &str[count++])))     { 		if (count >= MAXLINE)	//越界 		{ 			printf("too much...\n"); 			break;	 		} 		     } 	  	for(i = 0; i < count; i++)   		printf ("I have read: %d\n",str[i]);   	return 0; }

user: user-2
content: myFile.open("c:\\5.txt"); int c[5000]; int i = 0; if(myFile.is_open()) { 	while(!myFile.eof()) 	{ 		myFile >> c[i]; 		cout << c[i] << ' '; 		++i; 	} } myFile.close();

user: user-0
content: 3楼：.txt中存放的不就是字符型吗，怎么直接读成整形啊？

user: user-3
content: 直接读成整型数据

user: user-0
content: 是这样的
user-0 提问: 大神们帮我看看这个求平均值的C程序，为什么输出结果有错

回复:
user: user-0
content: 谢谢大家！  已经知道噜  以后会好好注意标准输出函数的格式的

user: user-1
content: #include <stdio.h> int main(void) {     float * average(float a[]);     float arry[4];     float *p;     printf("Enter arry[3]'s value:");     scanf("%f,%f,%f", &arry[0], &arry[1], &arry[2]);     p = average(arry);     printf("this arry's average is%f:\n",*(p+3));     return 0; } float * average(float a[]) {     a[3] = (a[0] + a[1] + a[2]) / 3.0;     return a; }    scanf哪里有些改变，

user: user-2
content: return a，何不直接改为return &a[3]?输出直接*p;

user: user-3
content: 引用 4 楼 w74839520 的回复:[quote=引用 3 楼 u013163178 的回复:] scanf_s("%f,%f,%f", &arry[0], &arry[1], &arry[2]); 改成 scanf_s("%f%f%f", &arry[0], &arry[1], &arry[2]);   逗号需要原样输入才行。 [/quote]是的

user: user-4
content: 格式化输入输出重点为格式，一个萝卜一个坑，拒绝和尚多粥少和和尚少粥多的中国特色，格式需要绝对匹配。  PS：建议楼主还可以顺便看一看关于C语言变参函数的知识，未来编程会有帮助。。。。。

user: user-4
content: PS:  建议参见百度百科中的Scanf函数原理讲解     http://baike.baidu.com/view/1390039.htm?fr=aladdin

user: user-5
content: 引用 3 楼 u013163178 的回复:scanf_s("%f,%f,%f", &arry[0], &arry[1], &arry[2]); 改成 scanf_s("%f%f%f", &arry[0], &arry[1], &arry[2]);   逗号需要原样输入才行。

user: user-3
content: scanf_s("%f,%f,%f", &arry[0], &arry[1], &arry[2]); 改成 scanf_s("%f%f%f", &arry[0], &arry[1], &arry[2]);

user: user-6
content: 同意1楼，代码没问题，估计是输入的问题

user: user-7
content: #include <stdio.h> int main(void) { 	float * average(float a[]); 	float arry[4]; 	float *p; 	printf("Enter arry[3]'s value:"); 	scanf("%f,%f,%f", &arry[0], &arry[1], &arry[2]);  	//楼主你的这个scanf的输入需要输入其中的逗号，你可能忘记输入了吧。 	//这程序没有错。 	p = average(arry); 	printf("this arry's average is%f:\n",*(p+3)); 	return 0; } float * average(float a[]) { 	a[3] = (a[0] + a[1] + a[2]) / 3.0; 	return a; }