C语言常用运算符与函数汇总

来源:互联网 发布:ubuntu 16.04密码忘了 编辑:程序博客网 时间:2024/05/16 08:52

运算符:
sizeof()
以字节为单位给出指定类型的大小。
例子a=sizeof(int);把本机int类型所占用的字节数赋值给变量a
&&,||,?
与,或,不是就是
*
所存地址里的内容
例子*p就是指针p里面所存地址里的内容
假如p=&var且var=3,那么*p=3
&
所存的地址
&var就是var的地址
函数:
scanf()
用于读取键盘的输入。
例子:scanf(“%f”,&a);读取用户从键盘输入的浮点数给变量a
strlen()
函数给出字符串的字符长度
例子:a=strlen(PE);输出PE所代表的字符串长度给变量a
注意:#define PE "skjdflksjdflksjdf"
fabs()
求浮点数的绝对值
例子:a=fabs(x);输出变量x的绝对值赋值给变量a
x=-2.323;
getchar(),putchar()
输入输出一个字符
ch=getchar();等同于scanf("%c",&ch);
ctype.h系列,太多了,以后有空补
gets(),puts()
读取整行输入,直至遇到换行符,然后丢弃换行符,储存其余字符,并在这些字符末尾添加一个空字符使其成为一个C字符串。它经常和puts()函数配对使用,该函数用于显示字符串,并在末尾添加换行符。
例子:
char words[40]
gets(words);
读取整行输入,储存到字符串words里面。
fgets(),fputs()
通过第二个参数限制读入字符书来解决溢出的问题。
例子:
char words[40]
fgets(words,40,stdin);
以标准输入的方式(stdin)从键盘读取40个字符存储到words字符串里面。如果是fputs就是把stdin(标准输入)改为stdout(标准输出)
gets_s
和fgets()的区别就是少了第三个参数,因为gets_s()函数只从标准输入中读取数据
strcat()/*strcat()函数的原型在#include<string.h>头文件里面*/
strcat()函数接受两个字符串作为参数,该函数把第二个字符串的备份附加在第一个字符串末尾,并把拼接后形成的新字符串作为第一个字符串,第二个字符串不变。
char flower[20]=“wonderflower”;
char addon[]="s smell like old shoes."
strcat(flower,addon);.。。。。。。。将addon字符串备份附加到flower字符串末尾,并把拼接后形成的新字符串作为第一个字符串,第二个字符串不变。
puts(flower);。。。。。。。。。。输出为wonderflowers smell like old shoes.
strncat()/*strncat()函数的原型在#include<string.h>头文件里面*/
和strcat()不同的是它多了第三个参数用来限定最大添加字符数。
strncat(bugs,addon,13)将把addon字符串的内容附加给bugs,在加到第13个字符或遇到空字符时停止。
strcmp();/*strncmp()函数的原型在#include<string.h>头文件里面*/
该函数通过比较运算符来比较字符串,就像比较数字一样,如果两个字符串参数相同,该函数就返回0,否则返回非零值。
例子:
#define STOP "quit"
char input[10][80];
int ct=0;
while(ct<10&&s_gets(input[ct],80)!=NULL&&strcmp(input[ct],STOP)!=0)/*比较input[ct]和STOP字符是否相同。
strncmp();
该函数比strcmp();函数多了一个参数,用来限定比较多少前多少个字符
strcpy(),strncpy()
该函数会将参数2代表的字符串拷贝到第一个参数代表的字符串上面。
const char *orig="best";
strcpy(copy+7,orig);
将best从copy+7的位置开始覆盖
strncpy();比strcpy()多了第三个参数用来限定最大拷贝字符数。
sprintf();
sprintf()的用法和printf的用法相同,只不过sprintf()把组合后的字符串储存在数组formal中而不是显示在屏幕上
例子:
sprintf(formal,"%s,%-19s:$%6.2f\n",last,first,prize);
把输出储存在formal字符串里面
malloc();
分配内存空间
例子:
double * ptd;
ptd=(double *) malloc(30 * sizeof(double));
以上代码为30个double类型的值请求内存空间,并设置ptd指向该位置。注意,指针ptd被声明为指向一个double类型,而不是指向内含30个double类型值的块。
free()
{
int main()
int i;
..
for(i=0;i<1000;i++)
gobble(glad,2000);
...
}
void gobble(double ar[],int n)
{
double *temp=(double*)malloc(n*sizeof(double));
../* free(temp);//假设忘记使用free()*/
释放内存,配合malloc()使用。当函数结束时,走位自动变量的指针temp也会消失。但是它指向的16000字节的内存却仍然存在。由于temp指针已经被销毁,所以无法访问这块内存,它也不能被反复使用,因为代码中没有调用free()释放这块内存。当第二辞调用gobble()时,它又创建了指针temp,并调用malloc()分配了16000字节内存,第一次分配的16000字节内存已经不可以使用,所以malloc()分配了另一块16000字节的内存。当函数结束时,该内存也无法再被访问和再使用。
循环要执行1000次,所以在循环结束时,内存池有1600万字节被占用。实际上,也许在循环结束之前已经耗尽所有的内存。这类问题被称为内存泄露。在函数末尾处调用free()函数可避免这类问题发生。
calloc();
分配内存
例子:
long * newmen;
newmen=(long *)calloc(100,sizeof(long));
第一个参数是所需的存储单元数量,第二个参数是存储单元的大小(以字节为单位)。
fopen();
该函数声明在stdio.h中。它的第一个参数是待打开文件的名称,更确切说是一个包含该文件名的字符串地址。第二个参数是一个字符串,指定待打开文件的模式。
EILE *fp;
fp=fopen(argv[1],"r")
用r模式打开名字为argv[1]的文件
getc(),putc()
从文件中获取字符/输出字符到文件中
例子:
ch=getc(fp);
从fp指定的文件中获取一个字符
putc(ch,fpout);
把字符ch放入FILE指针fpout指定的文件中。
fclose();
关闭指定的文件。
例子:
fclose(fp)函数关闭fp指定的文件,必要时刷新缓冲区。
rewind();
让程序回到文件开始处
例子:
rewind(fp)
让程序回到文件开始处,方便循环打印整个文件的内容。注意,rewind()接受一个文件指针作为参数。
fseek()和ftell()
有了fseek()函数,可把文件看作数组,在fopen()打开的稳健者直接移动到任意字节处。注意,fseek()有3个参数,返回一个
int类型的值;ftell()函数返回一个long类型的值,表示文件中的当前位置。
fseek()的第一个参数是FILE指针,指向待查找的文件,fopen()应该已经打开该文件
第二个参数是偏移量。该参数表示从起始点开始要移动的距离。
第三个参数是模式,该参数确定起始点。
例子:
fp=fopen(file,"rb)");/*打开文件便于定位*/
fseek(fp,0l,SEEK_END);/*定位到文件末尾*/
last=ftell(fp);/*把文件末尾参数赋值给last*/
fgetpos()和fsetpos()
int fgetpos(FILE * Rrestrict stream,fpos_t * restrict pos);
调用该函数时,它把fpos_t类型的值放到pos指向的位置上,该值描述了文件中的当前位置距离文件开头的字节数。如果成功返回0,如果失败,返回非0、
int fsetpos(FILE *stream,const fpos_t *pos);
调用该函数时,使用pos指向位置上的fpos_t类型值来设置文件指针指向偏移该值后指定的位置。如果成功,fsetpos()函数返回0;如果失败,则返回非0.fpos_t类型的值通过之前调用fgetpos()获得。

原创粉丝点击