1. 复习

如何调用库函数(别人写好的函数)

1)       头文件:包含指定的头文件,头文件主要包含此函数的声明

2)       函数名字:函数名字必须和头文件声明的名字一样

字符串常用处理函数:

1.字符串输入 gets() fgets()

注意:

  虽然都是读一行,(即输入\n后本次读取结束,

fgets会保留\n,读完后在最后加\0

gets读完后会将\n替换成\0

char buff[100]

gets(buf) //和 scanf的区别是可以有空格

// 最多只能输入99个

fgets(buf,100,stdin);

2.字符串的输出 puts() fputs()

(第一个参数是指针 第二个参数是file,这里使用标准输出

3.获取字符串长度: strlen (遇到\0就结束 sizeof不会!

4.字符串拷贝: strcpy(直接拷贝 strncpy(多了一个长度

5.字符串追加(连接): strcat() strncat()

6.格式化输出字符串: printf() sprint()

printf(“a = %d\n”,10);

“a = 10\n”;

sprint(buf,…

// 输出到字符数组buf中

7.格式化输入字符串 scanf(“%d”,&a)

char buf[] = “10”

sscanf(buf,”%d”,&a

8.字符串查询(需要使用返回值

strchr()  // 查询字符

strstr()  // 查询字符串

9.字符串切割 strtok()

strtok(buf,”,”) //切割的时候会把原字符串破坏

strtok(NULL,”,”) //第二次切割的时候要把指针指向NULL,才能继续切割

自定义函数

02 作业讲解

03 return和exit区别

return的作用,终止函数

1、  return主函数(main),程序结束

2、  return其他函数,程序不结束

//puts 和 printf的区别: puts会在结尾添加\n ,printf不会 puts只能输出字符串,而printf却可以进行标准化的输出

int I = 10;

printf(“%d”,i)

int I = 10;

puts(“%d”,i) //报错

exit(int )的作用是结束整个程序 //结束进程

相当于把return放到main函数中退出的操作

4 声明和定义

实现一个函数,功能和strlen一样的, int my_strlen(char str[])

(图中把函数放到main函数后面了)

编译时候C编译器会报警告,C++会出错,所以应该把声明放到前面

只要在调用的前面声明就行了,声明了好多次的情况

5 分文件(多文件)编程

1、按功能来分 xxx.h xxx.c

2、有一个主函数测试 自定义函数 main.c

(创建了俩文件

gcc *.c 出现真香警告

为了防止警告 应该加入声明

(这样就不报错了

想一下 如果我每次要使用都要声明是不是太麻烦了,

如果有三个.c 那是不是要在三个里面都重复的写声明代码

于是引入头文件

头文件的功能是什么

(预处理)

结论:多个文件中,不能出现同名函数(static除外)

xxx.c:

函数的定义

xxx.h:

.c中函数的声明

2、个主函数测试自定义函数 main.c

同一个文件如何防止头文件重复包含(包含多次,只有一次生效):

1、  #pragma once

2、

#ifndef _MYSTRLEN_H

#define _MYSTRLEN_H

//函数声明

#endif

include的原理: #include "a.h" ,则会把整个 a.h 文件都copy b.c 的开头

xxx.c:

函数的定义

xxx.h

.c中函数的声明

1、  有一个主函数测试自定义函数 main.c

多个文件中 不能出现同名函数(static除外

同一个文件如何防止头文件重复包含(包含多次,只有一次生效)

1.#pragma once

2.define

07 指针概述

1、  内存,以一个字节为单位分配内存

2、  每个字节的内存都有标号,这个标号就是地址,也叫指针

3、  地址需要存储 32位编译器用32位(4字节)存此地址 64位编译器用64位(8字节)存此地址

1、  房间分配号码,内存分配标号,编码

2、  根据房号找到对应的房间,根据地址找到对应的内存,寻址

08 指针补充

09 指针的定义和使用

10 指针变量和指针变量所指向的内存

11 上午知识点复习

12 指针练习

13 野指针

野指针:这个指针变量保存了一个没有意义(非法)的地址

  1. 只有定义后的变量,此变量的地址才是合法地址
  2. 野指针就是保存没有意义地址的指针变量
  3. 操作野指针变量本身不会有任何问题
  4. 操作野指针所指向的内存才导致报错误

14 空指针

15 指针大小

16 多级指针

总结:

  1. 指针变量也是一个变量,是变量就可以赋值
  2. 指针指向谁,就把谁的地址赋值给指针
  3. *p操作的是指针所指向的内存

18 []不是数组专属

19 万能指针和指针步长

1、  不可以定义void类型的普通变量 不能确定类型 编译器就不知道分配多大空间

void a;

可以定义void *变量(因为大小是编译器确定的

void * 指针也叫万能指针

void *可以指向任何类型的变量(类型匹配)

void *p = NULL;

int a = 10;

p = &a;

printf(“*p = %d\n”,*p);  //*p操作指针所指向内存

这里会报错,

或者这样写,也是会报错的

void *可以指向任何类型的变量,使用指针所指向的内存时,最好转换为它v恩深的指针类型

答案: void *p指向了a了 操作*p的时候不知道应该操作多少字节的内存

所以就会报错了

使用 void *p 的时候只保存了  4个字节中的一个字节

int *指向int类型,操作内存时,操作4字节

char *指向char类型,操作内存时,操作1字节

int类型4字节

char类型 1字节

注意:

1、  指针的加法,不是传提供的假发

2、  步长由指针指向的数据类型决定

20 const修饰符的指针

注意加以区分:

21 数组名

22 指向数组首元素的指针

23_通过指针加减访问数组元素

24 作业

C语言基础 (8) 常用字符串处理函数的更多相关文章

  1. 嵌入式-C语言基础:实现字符串拷贝函数

    自己实现一个字符串的拷贝函数 #include<stdio.h> #include<stdlib.h> #include <string.h> char * mys ...

  2. [转载]c++常用字符串操作函数

    原文地址:c++常用字符串操作函数作者:Valsun 函数名: stpcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char *source ...

  3. C语言的常用字符串操作函数(一)

    一直做的是单片机相关的程序设计,所以程序设计上更偏向底层,对于字符串的操作也仅限于液晶屏幕上的显示等工作,想提高下字符串操作的水平,而不是笨拙的数组替换等方式,翻看帖子发现C语言的字符串操作函数竟然这 ...

  4. VB常用字符串操作函数

    1. ASC(X),Chr(X):转换字符字符码 [格式]: P=Asc(X) 返回字符串X的第一个字符的字符码 P=Chr(X) 返回字符码等于X的字符 [范例]: (1)P=Chr(65) ‘ 输 ...

  5. PHP常用字符串操作函数实例总结(trim、nl2br、addcslashes、uudecode、md5等)

    /*常用的字符串输出函数 * * echo() 输出字符串 * print() 输出一个或多个字符串 * die() 输出一条信息,并退出当前脚本 * printf() 输出格式化字符串 * spri ...

  6. php常用字符串数组函数

    Php常用的数组函数 键值操作 Array_values($arr) 获取数据的值 Array_keys($arr) 获取数组的key Array_flip($arr) 数组键值反转 In_array ...

  7. Python 基础之常用内置函数

    1.常用内置函数 (1)abs 绝对值函数 intvar = -9 res = abs(intvar)print(res) (2)round 四舍五入 (n.5 n为偶数则舍去 n.5 n为奇数 ,则 ...

  8. Delphi中常用字符串处理函数

    .copy(str,pos,num) 从str字符串的pos处开始,截取num个字符的串返回. 假设str为,)=,)='def' .concat(str1,str2{,strn}) 把各自变量连接起 ...

  9. mysql常用字符串操作函数大全,以及实例

    今天在论坛中看到一个关于mysql的问题,问题如下 good_id     cat_id12654         665,56912655         601,4722 goods_id是商品i ...

随机推荐

  1. 苦酒入喉心作痛,红酒入鹅鹅想哭——震惊!勒索病毒想哭靠wine感染了Ubuntu16.04

    都说linux能免疫win的病毒来着…… 今天作死,逛贴吧时好奇下载了一个想哭2.0 (http://pan.baidu.com/share/link?shareid=1393367320&u ...

  2. asp.net--CRSF

    asp.net使用了token来防止CRSF攻击 前台: 使用@Html.AntiForgeryToken(); 浏览器里面被存了一个cookie值,这个值是asp.net存给浏览器的,是readon ...

  3. 关于DM8168中移植算法速度慢、效率低的新发现

    有不少的朋友,特别是刚刚接触DSP的朋友.基于DVRRDK编写C代码发现执行速度特别慢,我在上面简单的对每一个像素的UV分量赋值=0x80,这样就成了灰度图像.对1080P图像进行操作,发现处理每帧要 ...

  4. Fitnesse FIT的使用

    FIT是fitnesse使用的默认的引擎(SLIM的使用在上一篇文章中说明),不需要特别声明即可使用执行表格测试,所有编写的fixture都需要继承Fit的Fitxture 编写测试用例前需要先声明c ...

  5. Codeforces Round 313(div1)

    A题: 题目大意: 给出内角全为120度的六边形的六条边的边长,求由多少边长为1的等边三角形构成. 解题思路: 将六边形补全为一个大的等边三角形,则大的等边三角形的边长为六边形的相邻三边之和,接着减去 ...

  6. 通过top 5等待事件查看sql语句

    设计的动态性能视图有:v$session_event,v$session,v$sqlarea,首先在v$session_event中可以找到event,然后通过其动态性能视图找到sid,可以在v$se ...

  7. [ZJOI 2010] 数字计数

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1833 [算法] 数位DP [代码] #include <algorithm&g ...

  8. linux sysbench (一): CPU性能测试详解

    网上sysbench教材众多,但没有一篇中文教材对cpu测试参数和结果进行详解. 本文旨在能够让读者对sysbench的cpu有一定了解. 小慢哥的原创文章,欢迎转载 1.sysbench基础知识 s ...

  9. SwiftUI 官方教程(三)

    3. 用 Stacks 组合 View 在上一节创建标题 view 后,我们来添加 text view,它用来显示地标的详细信息,比如公园的名称和所在的州. 在创建 SwiftUI view 时,我们 ...

  10. BPM控制控件的隐藏与显示

    在BPM官方给的属性中控件属性DisplayRule中设置条件控制显示或者隐藏的时候,只能控制选中的,标题也要重新设置,这样就比较麻烦,不如自己来写javascript代码. 举一个简单的例子: 通过 ...