C常用函数 输入输出 stdio.h 字符串处理 string.h 工具函数 stdlib.h 数学函数 math.h

Slides:



Advertisements
Similar presentations
◎ 標準函數 標準函數庫中,提供了許多不同功能的函數,而這些函數 的原型宣告以及使用函數相關的定義,依照相關函數的分 類,分別定義在不同的標頭檔之中。 標準函數庫中,提供了許多不同功能的函數,而這些函數 的原型宣告以及使用函數相關的定義,依照相關函數的分 類,分別定義在不同的標頭檔之中。 本來呼叫使用標準函數庫裡的函數,也就是使用模組裡的.
Advertisements

只怕有心人只怕有心人 世上无难事世上无难事 浙江长征职业技术学院 — 计算机与信息技术系 — 相方莉制作.
电子成绩单项目实现.
“八皇后”问题 崔萌萌 吕金华.
第九章 字串 (String).
補充: Input from a text file
高级语言程序设计 C++程序设计教程(下) 2006年春季学期 与一些教材的区别 偏重理论,不去讨论某个系统的具体使用方法,但会涉及实现技术
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
第六讲 指针与字符串 —— 为什么指针 —— 持久动态内存分配 —— 字符串(字符数组).
第8章 字元與字串處理 8-1 C語言的字元檢查函數 8-2 C語言的字串 8-3 字串的輸入與輸出 8-4 指標與字串
C语言程序设计 第八章 函数.
複習 struct score_Type{ int chinese,english; }; struct my_Type{
第7章 结构体、联合体和枚举类型 本章导读 本章主要知识点 《 C语言程序设计》 (Visual C++ 6.0环境)
第六章 数 组 主讲教师 贾月乐 联系电话:
C语言程序设计 课程 第5章 数组 主讲:李祥 博士、副教授 单位:软件学院软件工程系.
C的發展史 C程式初體驗 C程式設計基本注意事項 上機實習課程
计算概论 第二十一讲 文件操作 北京大学信息学院.
课程编号: C语言常用库函数 版本: 讲师: 联系方式:.
补充内容 结构体 概述 定义结构体类型和定义结构体变量 结构体变量的引用 结构体变量的初始化 指针与结构体 用typedef定义类型的别名.
程序设计II 第三讲 字符串处理.
String C語言-字串.
C语言高级编程(第四部分) 字符串 北京大学 信息科学技术学院.
目录 第八章 数组 1 简单学生成绩管理系统的开发 2 一维数组 3 多维数组 4 字符数组 5 数组作函数参数.
STRUCTURE 授課:ANT 日期:2010/5/12.
计算概论 第十八讲 C语言高级编程 结构与习题课 北京大学信息学院.
Introduction to the C Programming Language
C語言簡介 日期 : 2018/12/2.
Chap 8 指针 8.1 寻找保险箱密码 8.2 角色互换 8.3 冒泡排序 8.4 电码加密 8.5 任意个整数求和*
C语言程序设计 李祥.
程序设计专题一 结构化程序设计与递归函数 主讲教师: 刘新国.
THE C PROGRAMMING LANGUAGE
字符串和字符数组 字符串的输入和输出 字符串的基本操作
第9章 文件操作 文件 使用文件的目的 操作系统管理数据的基本单位 存储在外存储器上的数据的集合
函 数 实验八 第24讲 C程序设计 Main() { int x,y; X=10; y=x*x+1;
第五章 习题课 电子信息与计算机科学系 曾庆尚.
第5讲 结构化程序设计(Part II) 周水庚 2018年10月11日.
数组 梁春燕 华电信息管理教研室.
7.1 广义表的概念 广义表是n(n≥0)个数据元素组成的序列,其中每个数据元素或是单个数据元素(简称原子),或仍然是一个广义表 。
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
|09 陣列.
第十章 用户自定义数据类型 目录 学生信息管理系统的开发 结构体数据类型的概述 结构体变量的使用 结构体数组
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
本节内容 随机读取 视频提供:昆山爱达人信息技术有限公司.
C语言大学实用教程 第6章 数组 西南财经大学经济信息工程学院 刘家芬
C语言程序设计 教案 崔武子制作
函式庫補充資料.
C语言的特点 1. C程序由许多函数组成 2. C程序必须有且只有一个主函数main( ) 3. 函数用“{”和“}”表示起点和终点
Chap 5 函数 5.1 计算圆柱体积 5.2 使用函数编写程序 5.3 变量与函数.
C qsort.
C程序设计.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第二章 类型、对象、运算符和表达式.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
C/C++基礎程式設計班 C++: 物件的使用、參考、重載函式 講師:林業峻 CSIE, NTU 3/28, 2015.
第 9 章 建構函式與解構函式.
隨機數 (亂數) 10後,取餘數 n = rand(); 利用 Code::Block 驗證一下 n = rand() %10; 998
_03宽字符与Unicode编程 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
本节内容 C语言中的宽字符 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第四章 串 String
C/C++基礎程式設計班 字元與字串 講師:林業峻 CSIE, NTU 3/14, 2015.
Introduction to the C Programming Language
C 程式設計— 字元與字串 台大資訊工程學系 資訊系統訓練班.
字串 第10章 part I 8/30/2019.
第9章 C++程序设计初步 9.1 C++的特点 9.2 最简单的C++程序 9.3 C++的输入输出 9.4 函数的重载
台大資訊工程學系 資料系統訓練班 第119期 吳晉賢
函式庫補充資料 1.
隨機函數.
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
Presentation transcript:

C常用函数 输入输出 stdio.h 字符串处理 string.h 工具函数 stdlib.h 数学函数 math.h 时间函数 time.h

1输入输出函数 stdio.h 输入 输出 scanf gets getchar printf scanf(“%s”,str):读取的字符串不包含空格 gets gets(str):读取的字符串可包含空格 getchar 输出 printf

2字符串函数 string.h 2.1字符串转换为数值 atof、atoi、atol 2.2字符串处理 strcat, strncat strcpy, strncpy strcmp, strncmp,strcmpi/stricmp,strncmpi/strnicmp strlwr, strupr strchr strstr strlen strrev strtok 2.3内存空间处理 memset、memcpy、memcmp

2.1字符串转换为数值 atof:字符串转换为double atoi:字符串转换为int atol:字符串转换为long

2.2字符串处理 strcpy, strncpy:字符串复制 strlwr, strupr:大小写转换 strchr:在字符串中查找某个字符 strcat, strncat:字符串连接 strcpy, strncpy:字符串复制 strcmp, strncmp,strcmpi/stricmp,strncmpi/strnicmp:字符串比较 strlwr, strupr:大小写转换 strchr:在字符串中查找某个字符 strstr:在字符串中查找某个子字符串 strlen:字符串长度 strrev:字符串反转 strtok:字符串分割

strlwr 原型:extern char *strlwr(char *s); 用法:#include <string.h> 说明:只转换s中出现的大写字母,不改变其它字符。返回指向s的指针。 这个函数很容易理解,但提及它是因为某些编译器并不含有该函数,因为需要我们自己写。(同样,后面一些函数也需要我们自己写。)

重写strlwr char * strLwr(char *str) { int i=0; while(str[i]) if(str[i]>='A' && str[i]<='Z') str[i] += 32; i++; } return str;

strupr 原型:extern char *strupr(char *s); 用法:#include <string.h> 说明:只转换s中出现的小写字母,不改变其它字符。返回指向s的指针。 同样,这个函数也可能需要重写。

strrev 原型:extern char *strrev(char *s); 用法:#include <string.h> 功能:把字符串s的所有字符的顺序颠倒过来(不包括空字符NULL)。 说明:返回指向颠倒顺序后的字符串指针。 这个函数很常用,但可能要重写。

重写strrev char * strRev(char *str) { int len = strlen(str); int i=0; char chr_tmp; for(i=0;i<len/2;i++) chr_tmp = str[i]; str[i] = str[len-i-1]; str[len-i-1] = chr_tmp; } return str;

strstr 原型:extern char *strstr(char *haystack, char *needle); 用法:#include <string.h> 功能:从字符串haystack中寻找needle第一次出现的位置(不比较结束符NULL)。 说明:返回指向第一次出现needle位置的指针,如果没找到则返回NULL。

strtok 原型:extern char *strtok(char *s, char *delim); 用法:#include <string.h> 功能:分解字符串为一组标记串。s为要分解的字符串,delim为分隔符字符串。 说明:首次调用时,s必须指向要分解的字符串,随后调用要把s设成NULL。strtok在s中查找包含在delim中的字符并用NULL('\0')来替换,直到找遍整个字符串。返回指向下一个标记串。当没有标记串时则返回空字符NULL。

strtok 这个函数挺不错的,但要注意使用时第一次以外的都要传递参数NULL。 还有就是,这个函数会改变我们传递进去的参数,如果我们还需原参数就需备份原参数。 我们同时也可以重写这个函数。

重写strtok char * strTok(char * str_tmp) { static char * str; static int i=0; if(str_tmp) str = str_tmp; i = 0; } while((str[i]<'a'||str[i]>'z') && str[i]) i++; if(!str[i]) return NULL; int j=i+1; while(str[j]>='a' && str[j]<='z') j++; str[j] = 0; int t = i; i = j+1; return str+t;

注意结尾 字符串如果结尾出没有结束符’\0’,需要人工加上’\0’,否则无法确定字符串在何处结束

2.3内存空间处理 void *memset( void *buffer, int ch, size_t count ) 设置一块内存的值(注意,以字节为单位进行处理) void *memcpy( void *to, const void *from, size_t count ); 复制内存的值 int memcmp( const void *buffer1, const void *buffer2, size_t count ) 比较

3 工具函数stdlib.h 3.1 qsort 3.2 bsearch 3.3 随机数rand和srand 3.4 标准内存函数:malloc、free

3.1 qsort void qsort( void *buf, size_t num, size_t size, int (*compare)(const void *, const void *) ); 功能: 对buf 指向的数据(包含num 项,每项的大小为size)进行快速排序。如果函数compare 的第一个参数小于第二个参数,返回负值;如果等于返回零值;如果大于返回正值。函数对buf 指向的数据按升序排序。

对简单数据类型数组排序 int num[100]; int cmp ( const void *a , const void *b ) { return *(int *)a - *(int *)b; } qsort(num,100,sizeof(int),cmp);

对struct数组排序 struct point { int x,y; }; struct point t[5]; int cmp(const void *a,const void *b){ struct test s=*(struct test*)a,t=*(struct test*)b; if((s.x-t.x)>0) return 1; if((s.x-t.x)<0) return -1; if((s.y-t.y)>0) return 1; if((s.y-t.y)<0) return -1; return 0; } qsort(t,5,sizeof(struct test),cmp);

3.2 bsearch void *bsearch( const void *key, const void *buf, size_t num, size_t size, int (*compare)(const void *, const void *) );   参数:第一个:要查找的关键字。第二个:要查找的数组。第三个:指定数组中元素的数目。第四个:每个元素的长度(以字符为单位)。第五个:指向比较函数的指针。   功能: 函数用折半查找法在从数组元素buf[0]到buf[num-1] 匹配参数key。如果函数compare 的第一个参数小于第二个参数,返回负值;如果等于返回零值;如果大于返回正值。数组buf 中的元素应以升序排列。函数bsearch()的返回值是指向匹配项,如果没有发现匹配项,返回NULL

3.3随机数rand和srand int rand(void) void srand(unsigned seed) 从srand(seed)中指定的seed(种子)开始,返回一个[seed, 0x7fff]间的随机整数。 如果没有指定种子,则种子默认为1 void srand(unsigned seed) 参数seed是rand()的种子,用来初始化rand()的起始值。

随机数的生成 #include <stdio.h> #include <time.h> #include <stdlib.h> int main() { int i; srand((unsigned int)time(NULL)); for(i=0;i<10;i++) printf("%u\n",rand()); return 0; }

3.4 标准内存函数stdlib.h malloc calloc realloc free void *malloc( size_t size ) calloc realloc free void free(void *p)

动态创建数组 #include <stdio.h> main() { int *a; int i; a=(int *)malloc(sizeof(int)*10); for(i=0;i<10;i++) a[i]=i; printf("%d\n",a[i]); free(a); }

动态创建结构 #include <stdio.h> #include <stdlib.h> #include <string.h> struct student { char name[10]; int age; char sex; } main() struct student *t; t=(struct student *)malloc(sizeof(struct student)); strcpy(t->name,"Tom"); t->age=19; t->sex='m'; printf("%s %d %c\n",t->name,t->age,t->sex); free(t);