C复习

单位

位(bit):简记为b,也称为比特,每个0或1就是一个位(bit)。 计算机中的CPU位数指的是CPU一次能处理的最大位数。
字节(Byte):1字节=8位
ASCII码:一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,换算为十进制。最小值0,最大值255。如一个ASCII码就是一个字节。char占一个字节

随机数

#include<stdio.h>
#include<time.h> 
#include<stdlib.h>
int main(){

    srand(time(0));
    for(int i=0;i<10;i++){
        printf("%4d",rand()%10);
    }
    putchar('\n');
    for(int i=0;i<10;i++){
        printf("%4d",rand()%10);
    }
    return 0;
} 

字符串函数

gets(k)、puts(k)、k=getchar()、putchar(k)、
strcpy(字符数组1,字符串2);
strncpy(str1,str2,n);拷贝str2的前n个字符
strcat(str1,str2) ; 字符串连接
strcmp(str1,str2);
strlen(str1);
strlwr(str);大小写转换
strupr(str);

#include<stdio.h>
int main(){
    char a[5];
    gets(a);
    printf("%s\n",a);
    puts(a);
    for(int i=0;i<9;i++)
    printf("%c",a[i]);

    putchar('\n');

    char b;
    b=getchar();
    printf("%c",b);
    putchar(b);

    printf("请输入弧头和弧尾(a->b)") ;
    char c,d;
    c=getchar();
    getchar();
    getchar();
    d=getchar();
    printf("c=%c,d=%c\n",c,d);

    return 0;
}

指向函数的指针&返回指针的函数

//指向函数的指针
int (*pf)(int ,int);
int max(int x,int y){
...
}
pf=max;
c=max(a,b);
c=(*pf)(a,b);
//返回指针的函数
int *search(char *ps,char ch){
while(*ps!='\0'){
    if(*ps==ch)
        return ps;
    else ps++;
    }
    return NULL;
}
char str[80],*p;
p=search(str,ch);

指针数组

//存放指针的数组
char str[3][10]={"i","love","china"};
char *ps[3]={str[0],str[1],str[2]};
for(int i=0;i<3;i++)
    printf("%s ",*(ps+i));

int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int *p[3]={a[0],a[1],a[2]};
for(int i=0;i<3;i++){
    for(int j=0;j<4;j++)
        printf("%5d",*(p[i]+j));
    printf("\n");
}

main函数的参数

//argc统计执行该程序时输入的参数个数
//argv:是一个指针数组,数组中的每个元素指向命令行中的一个字符串
//env:指针数组,数组中的每个元素指向系统的环境变量字符串
#include<stdio.h>
int main(int argc,char *argv[]){
    int i;
    printf("argc=%d\n",argc);
    printf("command name:s%\n",argv[0]);
    for(int i=0;i<argc;i++)
        printf("parameter %d:%s\n",i,argv[i]);
    return 0;
}

这里写图片描述

内存的使用

int *p=(int *)malloc(n*sizeof(int));
int *q=(int *)colloc(n,sizeof(int));
//两者运行结果相同,主要不同在于:
//1、参数不同;2、calloc函数申请的存储空间自动初始化为0。
free(p);free(q);
p=(int *)realloc(p,(m+n)*sizeof(int));//重新分配

结构体&typedef

//定义结构体类型
struct Point{
int x;
int y;
};
struct Point P1;//定义结构体变量
//定义变量以后系统才为变量开辟了空间
//可以将二者结合
struct Point{
int x;
int y;
}P1;
typedef int INT;
typedef struct Point{
int x;
int y;
}P;//定义结构体类型P,并没有为其开辟空间

共用体

//共用体中所有成员公用一块内存,所占内存大小为成员中占据内存最大的成员的大小
//某一时刻,内存只能存放一个成员,后使用的成员将覆盖原内存中的成员
//目的是为了节省空间
typedef struct{
 char name[20];
 int age;
 char job[10];
 union{
     int salary;
     float score;
    }data;
}

枚举

enum Weekday {Sun,Mon,Tue,Wed,Thu,Fri,Sat};//定义枚举类型
enum Weekday workday;//定义枚举变量
enum Weekday {Sun,Mon,Tue,Wed,Thu,Fri,Sat} workday;
//系统默认对枚举元素从0开始进行编号,其后元素递增.程序员也可自己指定起始元素编号,
enum Weekday {Sun=1,Mon,Tue,Wed,Thu,Fri,Sat};
//枚举变量课进行关系运算,比较的是定义时的编号的大小
x=(workday==Mon);
if(workday>Wed)...

文件

//fputc(),fgetc()
#include<stdio.h> 
int main(){
    FILE *fp1,*fp2;
    char ch,filename1[20],filename2[20];
    printf("请输入源文件名:\n");
    gets(filename1);
    puts("请输入目标文件名:");
    gets(filename2);
    if((fp1=fopen(filename1,"r"))==NULL){//打开已存在的文件 
        printf("无法打开此文件\n");
        return 1;
    }
    if((fp2=fopen(filename2,"w"))==NULL){//建立新文件 
        printf("无法打开此文件\n");
        return 1;
    }
/* 
    while((ch=fgetc(fp1))!=EOF){//EOF=-1
        fputc(ch,fp2);//写入fp2文件 
        putchar(ch);//输出到屏幕显示 
    }
*/ 
    while(!feof(fp1)){//feof()文件结束返回1,否则返回0 
        ch=fgetc(fp1);
        fputc(ch,fp2);//写入fp2文件 
        fputc(ch,stdout);//输出到屏幕显示 
    }


    putchar('\n');
    fclose(fp1);fclose(fp2);
    return 0;
}
//fread(),fwrite()
#include<stdio.h>
#define SIZE 10//数组长度
int main(){
    short i,inArray[SIZE],outArray[SIZE]={1,2,3,4,5,6,7,8,9,10};
    FILE *fp;
    if((fp=fopen("data.bin","wb"))==NULL) 
    {//建立二进制文件data.bin
    printf("无法打开文件.") ;
    return 1;
    }
    fwrite(outArray,sizeof(outArray),1,fp);//将数组outArray写入文件data.bin
    fclose(fp) ;

    if((fp=fopen("data.bin","rb"))==NULL)
    {//为读打开文件data.bin
    printf("无法打开文件.") ;
    return 1;
    }
    fread(inArray,sizeof(short),SIZE,fp);//读文件数据存入数组inArray
    fclose(fp);
    for(i=0;i<SIZE;i++)
        printf("%3d",inArray[i]) ;
    printf("\n");
    return 0;
} 
char *fgets(char *str,int n,FILE *fp);
//从fp指定文件中读取长度最大为n-1个字符的字符串,存入str中
char fputs(char *str,FILE *fp);
//向文件fp写入str
void rewind(FILE *fp);
//将fp所指向的文件位置指针移动到文件的首位
int fseek(FILE *fp,long int offset,int whence);
//将fp移动距离whence偏移offset字节处
long int ftell(FILE *fp);
//返回当前文件位置指针相对文件起始位置的偏移量
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值