C语言基础 (8) 常用字符串处理函数
- 复习
如何调用库函数(别人写好的函数)
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 野指针
野指针:这个指针变量保存了一个没有意义(非法)的地址
- 只有定义后的变量,此变量的地址才是合法地址
- 野指针就是保存没有意义地址的指针变量
- 操作野指针变量本身不会有任何问题
- 操作野指针所指向的内存才导致报错误


14 空指针
15 指针大小


16 多级指针


总结:
- 指针变量也是一个变量,是变量就可以赋值
- 指针指向谁,就把谁的地址赋值给指针
- *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) 常用字符串处理函数的更多相关文章
- 嵌入式-C语言基础:实现字符串拷贝函数
自己实现一个字符串的拷贝函数 #include<stdio.h> #include<stdlib.h> #include <string.h> char * mys ...
- [转载]c++常用字符串操作函数
原文地址:c++常用字符串操作函数作者:Valsun 函数名: stpcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char *source ...
- C语言的常用字符串操作函数(一)
一直做的是单片机相关的程序设计,所以程序设计上更偏向底层,对于字符串的操作也仅限于液晶屏幕上的显示等工作,想提高下字符串操作的水平,而不是笨拙的数组替换等方式,翻看帖子发现C语言的字符串操作函数竟然这 ...
- VB常用字符串操作函数
1. ASC(X),Chr(X):转换字符字符码 [格式]: P=Asc(X) 返回字符串X的第一个字符的字符码 P=Chr(X) 返回字符码等于X的字符 [范例]: (1)P=Chr(65) ‘ 输 ...
- PHP常用字符串操作函数实例总结(trim、nl2br、addcslashes、uudecode、md5等)
/*常用的字符串输出函数 * * echo() 输出字符串 * print() 输出一个或多个字符串 * die() 输出一条信息,并退出当前脚本 * printf() 输出格式化字符串 * spri ...
- php常用字符串数组函数
Php常用的数组函数 键值操作 Array_values($arr) 获取数据的值 Array_keys($arr) 获取数组的key Array_flip($arr) 数组键值反转 In_array ...
- Python 基础之常用内置函数
1.常用内置函数 (1)abs 绝对值函数 intvar = -9 res = abs(intvar)print(res) (2)round 四舍五入 (n.5 n为偶数则舍去 n.5 n为奇数 ,则 ...
- Delphi中常用字符串处理函数
.copy(str,pos,num) 从str字符串的pos处开始,截取num个字符的串返回. 假设str为,)=,)='def' .concat(str1,str2{,strn}) 把各自变量连接起 ...
- mysql常用字符串操作函数大全,以及实例
今天在论坛中看到一个关于mysql的问题,问题如下 good_id cat_id12654 665,56912655 601,4722 goods_id是商品i ...
随机推荐
- (6)Spring Boot datasource - mysql【从零开始学Spring Boot】
在任何一个平台都逃离不了数据库的操作,那么在spring boot中怎么接入数据库呢? 很简单,我们需要在application.properties进行配置一下,application.proper ...
- [bzoj2124]等差子序列_线段树_hash
等差子序列 bzoj-2124 题目大意:给定一个1~n的排列,问是否存在3个及以上的位置上的数构成连续的等差子序列. 注释:$1\le n\le 10^4$. 想法:这题就相当于是否存在3个数i,j ...
- [bzoj3680]吊打XXX_模拟退火
吊打XXX bzoj-3680 题目大意:在平面上给定n个点,每个点有一个权值.请在平面上找出一个点(不一定在这n个点内找)使得这个点到n个点的距离*权值最小,即求这n个点的重心. 注释:$1\le ...
- 进入全屏 nodejs+express+mysql实现restful风格的增删改查示例
首先,放上项目github地址:https://github.com/codethereforam/express-mysql-demo 一.前言 之前学的java,一直用的ssm框架写后台.前段时间 ...
- ruby for in 循环中改变i的值无效
ruby for in 循环中改变i的值无效 for j in 1..5 puts "#{j}hehe" j = j + 2 #break end 在循环中,使用j = j + 2 ...
- Activiti的简单入门样例(经典的请假样例)
经典的请假样例: 流程例如以下,首先须要部门经理审批.假设请假天数大于2天,则须要总经理审批,否则HR审批就可以 一:创建maven项目,项目结构例如以下: watermark/2/text/aHR0 ...
- 三期_day06_登录和找回password
登录思路: 前台发送一个请求,然后通过spring的自己主动注參注入username和password,将password加密后与数据库中查找的做比較.返回是否通过. 这里还使用了EasyUI的校 ...
- 饭卡(hdoj--2546--背包)
饭卡 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- day63-webservice 08.在web项目中配置带有接口的webservice服务
这个是配置带有接口的WebService的服务. http://localhost:8080/cxf-web-server/service 带有接口的实现类也给它做好了.jaxws:endpoint是 ...
- 关于打包压缩几种格式(gzip,bzip2,xz)的试验对比
要通过脚本进行备份,必然将会应用到压缩技术,这里简单针对几个常见的格式进行测验,从而得到一种合适的方式. 这里以一个应用目录做例子: [root@isj-test-5 mnt]$du -sh * 66 ...