介绍一下C
这种事,自己问度娘啊。C语言是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的D.M.Ritchie于1972年推出。1978后,C语言已先后被移植到大、中、小及微型机上。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画。具体应用比如单片机以及嵌入式系统开发。结构 1.一个C语言源程序可以由一个或多个源文件组成。 2.每个源文件可由一个或多个函数组成。 3.一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。 4.源程序中可以有预处理命令(包括include 命令、if命令、pragma命令),预处理命令通常应放在源文件或源程序的最前面。 5.每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。 6.标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。编辑本段特点 1. C是高级语言。它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。 2.C是结构式语言。结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。 3.C语言功能齐全。具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。 4. C语言适用范围大。适合于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。 C语言对编写需要硬件进行操作的场合,明显优于其它高级语言,有一些大型应用软件也是用C语言编写的。编辑本段特色 指针是C语言的一大特色,可以说是C语言优于其它高级语言的一个重要原因。就是因为它有指针,可以直接进行靠近硬件的操作,但是C的指针操作不做保护,也给它带来了很多不安全的因素。C++在这方面做了改进,在保留了指针操作的同时又增强了安全性,受到了一些用户的支持,但是,由于这些改进增加语言的复杂度,也为另一部分所诟病。Java则吸取了C++的教训,取消了指针操作,也取消了C++改进中一些备受争议的地方,在安全性和适合性方面均取得良好的效果,但其本身解释在虚拟机中运行,运行效率低于C++/C。一般而言,C,C++,java被视为同一系的语言,它们长期占据着程序使用榜的前三名。编辑本段入门 对于一个初学者,Microsoft Visual C++是一个比较好的软件。界面友好,功能强大,调试也很方便。这是微软出的一个C语言集成开发环境(IDE),主要有:VC++6.0、VS2005.VS2008.VS2010等,分为企业版和学生版等。对于初学者VC++6.0是比较容易上手的,但其对标准支持的不好可能使人养成不良的编程习惯。 在unix/linux操作系统上,学习c语言一般使用vim/emacs来编辑源文件,使用gcc来编译源文件,使用make程序来管理编译过程。 其他编译器如CodeBlocks10.05(跨平台linux/windows开源免费)、dev-c++(开源免费)、turbo、c-free5.0、codelite(开源免费)、eclipse(开源免费基于Java 扩展平台)……请看参考资料
求C++中ReverseFind的用法
函数原型:int ReverseFind( TCHAR ch ) const; 返回值: 返回此CString 对象中与要求的字符匹配的最后一个字符的索引;如果没有找到需要的字符则返回-1。 参数: ch 要搜索的字符。 说明:此成员函数在此CString 对象中搜索与一个子串匹配的最后一个字符。此函数类似于运行时函数strrchr。 示例:// CString::ReverseFind 示例CString s( "abcabc" );ASSERT( s.ReverseFind( 'b' ) == 4 );//找到'b'的下标为4 相关函数:Find
c++。。。。。
是这样的,fun()方法:第一个参数x是定义的常量,常量只能赋初始值,在之后不能对它进行改变,因此。x++;在这里是错误的,一般来说程序连编译都应该通不过才对。忽略这跳语句,继续看后面的参数定义,第二个参数是&y,这个是实参,传进来的地址值,这个值在方法中改变值后会对源值进行改变,第三个参数z是形参,在方法中改变值后对源值不会进行改变。
结合主函数传进来的值,分析fun()方法中变量的变化过程:
z++;z进行了自增,此时z=4;
y=x+y+z; 因为x++;是无效的,所以x值仍然为1,y为2,z为4,则y=1+2+4=7;
注意:实参y此时值已经发生变化,所以源值也发生了变化;
return y; 返回一个值;
总结下,fun()方法结束后,x=1,y=7,z=4;
因为x和y是传的实参,所以主函数的a=1,y=7,z因为是形参源值不跟着变化,所以仍然是c=3;
d=fun(a,b,c);返回值7赋给了d,d=7;
最终输出值的结果为:1,7,3,7
CString 截取部分字符串的几种方法
自写的字符串截取程序,不懂可以继续问
系统里的截取前n个字符是strncpy
#include
#include
char *mystrncpy(const char *string,int n){//要求截取的字符串不可以改变,但指向字符串的指针可以改变
char *p=string;
if(p==NULL){//如果截取的字符串是空的直接返回
return NULL;
}else{
int i=0;
while(*p!='\0'){//循环直到达n个字符串终止
if(i==n){
break;
}
i++;
p++;
}
*(p++)='\0';//赋值结束字符串
return string;
}
}
int main()
{
char str[50]="hello world";
printf("%s\n",mystrncpy(str,3));
printf("Hello world!\n");
return 0;
}
如何用MFC类或C++程序截取一字符串中的某一段字符
#include
#include
using namespace std;
int main()
{
string str = "POINT\\0.12,2.30,5.64";
string sstr = str.substr(6)+",";
double a[10],b;
int i=0,j,pos;
while((pos=sstr.find(","))!=-1)
{
b=atof(sstr.substr(0,pos).c_str());
a[i]=b;
i++;
sstr = sstr.substr(pos+1);
}
for(j=0;j<i;j++)
cout<<a[j]<<" ";
cout<<endl;
return 0;
}
在C语言环境下实现成绩管理
#include
#define N 60
typedef struct{
char id[10];
char name[20];
int mathematics;
int chinese;
int english;
float ave;
}Stu;
Stu s[N];
int l=0;
void add(){
if(l>=N) printf("班级已满\n");
else{
printf("输入学号:");
scanf("%s",s[l].id);
printf("输入姓名:");
scanf("%s",s[l].name);
printf("输入高数:");
scanf("%d",&(s[l].mathematics));
printf("输入语文:");
scanf("%d",&(s[l].chinese));
printf("输入英语:");
scanf("%d",&(s[l].english));
s[l].ave=((float)s[l].mathematics+s[l].chinese+s[l].english)/3;
int i;
Stu temp;
for(i=l-1;i>=0;i--){
if(s[i].ave<s[i+1].ave){
temp=s[i];
s[i]=s[i+1];
s[i+1]=temp;
}
else break;
}
l++;
}
}
void display(){
int i;
if(l==0) printf("当前无记录\n");
else{
printf("学号 姓名 高数 语文 英语 平均\n");
for(i=0;i<l;i++)
printf("%s %s %3d %3d %3d %3.2f\n",s[i].id,s[i].name,s[i].mathematics,s[i].chinese,s[i].english,s[i].ave);
}
}
int main(){
int c;
do{
printf("1.添加数据 2.显示数据 3.退出\n");
printf("你要的操作:");
scanf("%d",&c);
if(c==1){
add();
}
else if(c==2){
display();
}
else if(c==3) break;
else printf("非法操作,请重试\n");
}while(1);
return 0;
}
C++读取文件是怎样将绝对路径转化为相对路径
把需要读取的文件放在可执行程序所在的文件夹中,即可直接使用相对路径。如果待读取文件在其他文件夹,必须使用绝对路径。1、C语言标准库提供了一系列文件操作函数。文件操作函数一般以f+单词的形式来命名(f是file的简写),其声明位于stdio.h头文件当中。例如:fopen、fclose函数用于文件打开与关闭;fscanf、fgets函数用于文件读取;fprintf、fputs函数用于文件写入;ftell、fseek函数用于文件操作位置的获取与设置。2、例程:#includeint a;char b,c[100];int main(){ FILE * fp1 = fopen("input.txt", "r");//打开输入文件,放在执行程序所在目录下 FILE * fp2 = fopen("output.txt", "w");//打开输出文件 if (fp1==NULL || fp2==NULL) {//若打开文件失败则退出 puts("不能打开文件!"); rturn 0; } fscanf(fp1,"%d",&a);//从输入文件读取一个整数 b=fgetc(fp1);//从输入文件读取一个字符 fgets(c,100,fp1);//从输入文件读取一行字符串 printf("%ld",ftell(fp1));//输出fp1指针当前位置相对于文件首的偏移字节数 fputs(c,fp2);//向输出文件写入一行字符串 fputc(b,fp2);//向输出文件写入一个字符 fprintf(fp2,"%d",a);//向输出文件写入一个整数 fclose(fp1);//关闭输入文件 fclose(fp2);//关闭输出文件,相当于保存 return 0;}
关于C++相对路径与绝对路径的问题
首先 你这个B\\Addins\\QSanguosha0224路径,在不同电脑上可能不同
那么它和你运行的exe文件,即调用你dll的文件位置有什么关系吗? 如果有,那么就用他们之间的相对位置写相对路径,否则是没办法用相对路径的
绝对路径也可以用一些特殊的方式
比如,如果你这个QSanguosha.exe是装在系统路径下,比如program files这样的windows系统路径,可以用windows环境变量来确定位置
如果是安装的exe,那么注册表里面是不是有安装的位置呢? 通过查注册表来找exe路径也是一个思路
如果全不行,那么没办法,搜索吧。 从每个盘根目录开始找合适的文件夹和exe文件,然后运行
MFC获取指定文件夹文件目录
在MFC中,使用CFileFind类,可以枚举一个目录下的所有文件和子目录。示例:void ListFolder(const CString & sPath){ CFileFind ff; BOOL bFound = ff.FindFile(sPath + "\\*.*"); while(bFound) { bFound = ff.FindNextFile(); if(ff.IsDirectory()) //是目录 { if(!ff.IsDots()) //不是本级目录或父目录(.和..) ListFolder(ff.GetFilePath()); //递归子目录 } else { AfxMessageBox("文件:" + ff.GetFilePath()); } } ff.Close();}