c语言上机复习

C语言复试

常见字符的ASCII

注意:A-Z 需要加上在A的基础上加25 而不是26

  • A 开始 65 加上32 变成小写字母 a

  • Z 结束 90 加上32 变成小写字母 z

    细节

    如果希望数组以’\0’结束,则可以写成以下三者之一:

    • u8 str1[]={“cxjr.21ic.org”}; //字符串赋值

    • u8 str1[]={‘c’,‘x’,‘j’,‘r’,’.’,‘2’,‘1’,‘i’,‘c’,’.’,‘o’,‘r’,‘g’,’\0’}; //人工添加

    • u8 str1[14]={‘c’,‘x’,‘j’,‘r’,’.’,‘2’,‘1’,‘i’,‘c’,’.’,‘o’,‘r’,‘g’}; //故意给数组预留一个空位

      **const int p与int const p的区别

      • const int *p 中 *p的值不可以修改,p指针的值可以修改

      • int * const p 中 p指针的值不可以修改,*p的值可以修改

        文件包含

        #include<文件名> 和 #include"文件名"

        区别:<>在系统指定目录下搜索文件,""在当前目录下搜索,如果找不到再到系统指定目录下搜索。

        gets() 是专用的字符串输入函数,与 scanf() 相比,gets() 的主要优势是可以读取含有空格的字符串

常见思路

  1. 方程有两个自变量不知道

    • 解决方法:for循环嵌套遍历,从0开始尝试

常见函数

求平方根的函数

double sqrt(double num); 头文件 #include<math.h>

求x的y次方(次幂)

double pow(double x, double y); 头文件 #include<math.h>

pow()用来计算以x 为底的 y 次方值,然后将结果返回。

求x的绝对值

double fabs(double x); 头文件 #include<math.h>

文件操作

文件路径

例如,“E:\ch10.doc"或者"E:/ch10.doc”,表示文件 ch10.doc 保存在 E 盘根目录下。“f1.txt” 表示当前目录下的文件 f1.txt。

文件的打开与关闭

头文件:#include<stdio.h>

文件打开:FILE * fopen(char *filename, char *mode);

文件关闭:int fclose(FILE *fp);函数参数: fp:已打开的文件指针。 返回值:正常关闭,返回否则返回 EOF(-1)。

mode:文件打开模式,指出对该文件可进行的操作。常见的打开模式如 “r” 表示只读,“w” 表示只写,“rw” 表示读写,“a” 表示追加写入。

image-20210309153646849

image-20210309154215980

文件的顺序读写

字符输入函数 fgetc
  • int fgetc (FILE *fp);
    
  • 函数功能:从文件指针 fp 所指向的文件中输入一个字符。输入成功,返回该字符;已读取到文件末尾,或遇到其他错误,即输入失败,则返回文本文件结束标志 EOF(EOF 在 stdio.h 中已定义,一般为 -1)。

**注意:**由于 fgetc 是以 unsigned char 的形式从文件中输入(读取)一个字节,并在该字节前面补充若干 0 字节,使之扩展为该系统中的一个 int 型数并返回,而非直接返回 char 型。当输入失败时返回文本文件结束标志 EOF 即 -1,也是整数。故返回类型应为 int 型,而非 char 型。

如果误将返回类型定义为 char 型,文件中特殊字符的读取可能会出现意想不到的逻辑错误。

字符输出函数 fputc
  • int fputc (int c, FILE *fp);
    

所在头文件:<stdio.h>

函数功能:向 fp 指针所指向的文件中输出字符 c,输出成功,返回该字符;输出失败,则返回 EOF(-1)。

文件读写位置复位函数
  • void rewind (FILE *fp);
    

    所在头文件:<stdio.h>

    函数功能:把 fp 所指向文件中的读写位置重新调整到文件开始处。

    image-20210309163851702

字符串输入函数 fgets
  • char * fgets (char *s, int size, FILE * fp);
    

    所在头文件:<stdio.h>

    函数功能:从 fp 所指向的文件内,读取若干字符(一行字符串),并在其后自动添加字符串结束标志 ‘\0’ 后,存入 s 所指的缓冲内存空间中(s 可为字符数组名),直到遇到回车换行符或已读取 size-1 个字符或已读到文件结尾为止。该函数读取的字符串最大长度为 size-1。

    参数 fp:可以指向磁盘文件或标准输入设备 stdin。

    返回值:读取成功,返回缓冲区地址 s;读取失败,返回 NULL

    说明fgets 较之 gets 字符串输入函数是比较安全规范的。因为 fgets 函数可由程序设计者自行指定输入缓冲区 s 及缓冲区大小 size。即使输入的字符串长度超过了预定的缓冲区大小,也不会因溢出而使程序崩溃,而是自动截取长度为 size-1 的串存入 s 指向的缓冲区中。

字符串输出函数 fputs
int fputs (const char *str, FILE *fp);

所在头文件:<stdio.h>

函数功能:把 str(str 可为字符数组名)所指向的字符串,输出到 fp 所指的文件中。

返回值:输出成功,返回非负数;输出失败,返回EOF(-1)。

image-20210309165257738

按格式化输入输出

文件操作中的格式化输入输出函数 fscanf 和 fprintf 一定意义上就是 scanf 和 printf 的文本版本。程序设计者可根据需要采用多种格式灵活处理各种类型的数据,如整型、字符型、浮点型、字符串、自定义类型等。

文件格式化输入函数 fscanf 的函数原型为:
int fscanf (文件指针,格式控制串,输入地址表列);

所在头文件:<stdio.h>

函数功能:从一个文件流中执行格式化输入,当遇到空格或者换行时结束。注意该函数遇到空格时也结束,这是其与 fgets 的区别,fgets 遇到空格不结束。

返回值:返回整型,输入成功时,返回输入的数据个数;输入失败,或已读取到文件结尾处,返回 EOF(-1)。

故一般可根据该函数的返回值是否为 EOF 来判断是否已读到文件结尾处。

文件格式化输出函数 fprintf 的函数原型为:
int fprintf (文件指针,格式控制串,输出表列)

所在头文件:<stdio.h>

函数功能:把输出表列中的数据按照指定的格式输出到文件中。

返回值:输出成功,返回输出的字符数;输出失败,返回一负数。

在操作文件时,经常使用 feof 函数来判断是否到达文件结尾。

feof 函数的函数原型为:

int feof (FILE * fp);

所在头文件:<stdio.h>

函数功能:判断文件是否处于结束位置

是 - 返回 1

否 - 返回 0

按二进制方式读写数据块

接下来介绍按块读写数据的函数 fread 和 fwrite,这两个函数主要应用于对二进制文件的读写操作,不建议在文本文件中使用。接着介绍了 fread 读取二进制文件时,判断是否已经到达文件结尾的函数 feof。

数据块读取(输入)函数 fread 的函数原型为:

unsigned fread (void buf, unsigned size, unsigned count, FILE fp);

所在头文件:<stdio.h>

函数功能:从 fp 指向的文件中读取 count 个数据块,每个数据块的大小为 size。把读取到的数据块存放到 buf 指针指向的内存空间中。

返回值:返回实际读取的数据块(非字节)个数,如果该值比 count 小,则说明已读到文件尾或有错误产生。这时一般采用函数 feof 及 ferror 来辅助判断。

函数参数:

  • buf:指向存放数据块的内存空间,该内存可以是数组空间,也可以是动态分配的内存。void类型指针,故可存放各种类型的数据,包括基本类型及自定义类型等。
  • size:每个数据块所占的字节数。
  • count:预读取的数据块最大个数。
  • fp:文件指针,指向所读取的文件。

数据块写入(输出)函数 fwrite 的函数原型为:

unsigned fwrite (const void bufAunsigned size,unsigned count,FILE fp);

所在头文件:<stdio.h>

函数功能:将 buf 所指向内存中的 count 个数据块写入 fp 指向的文件中。每个数据块的大小为 size。

返回值:返回实际写入的数据块(非字节)个数,如果该值比 count 小,则说明 buf 所指空间中的所有数据块已写完或有错误产生。这时一般采用 feof 及 ferror 来辅助判断。

字符串操作

求字符串长度函数—— size_t   strlen(const char* str)

strlen

size_t strlen( const char* str)

  • 功能:计算字符串长度,不包含’\0’
  • 返回值:返回字符串的字符数
  • 说明:
    • strlen() 函数计算的是字符串的实际长度,遇到第一个’\0’结束;
    • 参数指向的字符串必须以 ’ \0 ‘结束
    • 函数返回值一定是size_t ,是无符号的
    • 如果你只定义没有给它赋初值,这个结果是不定的,它会从首地址一直找下去,直到遇到’\0’停止
    • sizeof返回的是变量声明后所占的内存数,不是实际长度,此外sizeof不是函数,仅仅是一个操作符,strlen()是函数
字符串复制函数 ——char* strcpy(char* dest,char* src)
  • 功能:将src字符串拷贝到dest所指的地址
  • 返回值:返回dest的起始地址
  • 说明:
    • 源字符串必须以’\0’结束
    • 会将源字符串的’\0’拷贝到目标空间
    • 目标空间必须可变
    • 如果参数dest所指的内存空间不够大,可能会造成缓冲溢出的错误情况,在编写程序时需特别留意,或者用strncpy()来取代
字符串复制函数——char* strncpy(char* dest,const char* src,size_t num)
  • 功能:拷贝src字符串的前num个字符到dest
  • 返回值:dest字符串起始地址
  • 说明:
    • 如果src字符串长度小于num,则拷贝完字符串后,在目标后追加0,直到num个
    • strncpy不会向dest追加’\0’
    • src和dest所指的内存区域不能重叠,且dest必须有足够的空间放置n个字符
字符串追加函数——char* strncat (char* dest,const char* src,size_t num)
  • 功能:将num个字符追加到字符串结尾
  • 返回值:返回dest字符串的起始地址
  • 说明:
    • strncat将会从字符串src的开头拷贝n个字符到dest字符串尾部
    • dest要有足够的空间来容纳要拷贝的字符串
    • 如果n大于字符串src的长度,那么仅将src全部追加到dest的尾部
    • strncat会将dest字符串最后的’\0’覆盖掉,字符追加完成后,再追加’\0’
字符串比较大小函数——int strcmp(const char* str1,const char* str2)
  • 功能:字符串比较
  • 返回值:若参数s1和s2字符串相同则返回0,s1大于s2则返回大于0的值,s1小于s2则返回小于0的值
  • 说明:
    • 判断两个字符串大小1)ASII码 2)长度
    • 区分大小写比较的,如果希望不区分大小写进行字符串比较,可以使用stricmp函数
字符串比较大小函数——int strncmp(const char* str1,const char* str2,size_t num)
  • 功能:指定大小长度的字符串比较
  • 返回值同strcmp
字符串连接函数——char* strcat(字符数组1,字符数组2)

注意:

1、字符串2连接到字符串1的后面,将连接后的结果放在字符数组1中,最后得到字符数组1的地址;

2、两个字符串后面均有结束符’\0’,在连接时字符串1后面的结束符会被取消,只在新串最后保留结束符。

字符串转换成整型函数——int atio(const char* str)
  • 功能:将字符串转换成整型
  • 返回值:返回转换成后的整型数,如果str不能转换成int或者str为空字符串,那么将返回0
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值