首页 > 其他分享 >C基础学习笔记——01-C基础第07天(字符串处理函数和函数)

C基础学习笔记——01-C基础第07天(字符串处理函数和函数)

时间:2022-11-14 14:35:07浏览次数:48  
标签:01 const 07 dest char 地址 字符串 include 处理函数


在学习C基础总结了笔记,并分享出来

01-C基础第07天(字符串处理函数和函数)

目录:
一、字符串处理函数
(1)gets()(2)fgets()(3)puts()(4)fputs()(5)strlen()(6)strcpy()(7)strncpy()(8)strcat()(9)strncat()(10)strcmp()(11)strncmp()(12)sprintf()(13)sscanf()(14)strchr()(15)strstr()(16)strtok()(17)atoi()
二、函数
多文件(分文件)编程

一、字符串处理函数

(1)gets()



1 #include <stdio.h> 2 char *gets(char *s); 3 功能:从标准输入读入字符,并保存到s指定的内存空间,直到出现换行符或读到文件结尾为止。 4 参数: 5 s:字符串首地址 6 返回值: 7 成功:读入的字符串 8 失败:NULL



gets(str)与scanf(“%s”,str)的区别:
1)gets(str)允许输入的字符串含有空格
2)scanf(“%s”,str)不允许含有空格

注意:由于scanf()和gets()无法知道字符串s大小,必须遇到换行符或读到文件结尾为止才接收输入,因此容易导致字符数组越界(缓冲区溢出)的情况。

(2)fgets()



1 #include <stdio.h> 2 char *fgets(char *s, int size, FILE *stream); 3 功能:从stream指定的文件内读入字符,保存到s所指定的内存空间,直到出现换行字符、读到文件结尾或是已读了size - 1个字符为止,最后会自动加上字符 '\0' 作为字符串结束。 4 参数: 5 s:字符串 6 size:指定最大读取字符串的长度(size - 1) 7 stream:文件指针,如果读键盘输入的字符串,固定写为stdin 8 返回值: 9 成功:成功读取的字符串 10 读到文件尾或出错: NULL



C基础学习笔记——01-C基础第07天(字符串处理函数和函数)_字符串处理

 

C基础学习笔记——01-C基础第07天(字符串处理函数和函数)_#include_02

fgets()在读取一个用户通过键盘输入的字符串的时候,同时把用户输入的回车也做为字符串的一部分。通过scanf和gets输入一个字符串的时候,不包含结尾的“\n”,但通过fgets结尾多了“\n”。fgets()函数是安全的,不存在缓冲区溢出的问题。

(3)puts()


1 #include <stdio.h>
2 int puts(const char *s);
3 功能:标准设备输出s字符串,在输出完成后自动输出一个'\n'。
4 参数:
5 s:字符串首地址
6 返回值:
7 成功:非负数
8 失败:-1


(4)fputs()


1 #include <stdio.h>
2 int fputs(const char * str, FILE * stream);
3 功能:将str所指定的字符串写入到stream指定的文件中, 字符串结束符 '\0' 不写入文件。
4 参数:
5 str:字符串
6 stream:文件指针,如果把字符串输出到屏幕,固定写为stdout
7 返回值:
8 成功:0
9 失败:-1



fputs()是puts()的文件操作版本,但fputs()不会自动输出一个'\n'。

(5)strlen()



1 #include <string.h>
2 size_t strlen(const char *s);
3 功能:计算指定指定字符串s的长度,不包含字符串结束符‘\0’
4 参数:
5 s:字符串首地址
6 返回值:字符串s的长度,size_t为unsigned int类型



(6)strcpy()


1 #include <string.h>
2 char *strcpy(char *dest, const char *src);
3 功能:把src所指向的字符串复制到dest所指向的空间中,'\0'也会拷贝过去
4 参数:
5 dest:目的字符串首地址
6 src:源字符首地址
7 返回值:
8 成功:返回dest字符串的首地址
9 失败:NULL


注意:如果参数dest所指的内存空间不够大,可能会造成缓冲溢出的错误情况。

(7)strncpy()



1 #include <string.h>
2 char *strncpy(char *dest, const char *src, size_t n);
3 功能:把src指向字符串的前n个字符复制到dest所指向的空间中,是否拷贝结束符看指定的长度是否包含'\0'。
4 参数:
5 dest:目的字符串首地址
6 src:源字符首地址
7 n:指定需要拷贝字符串个数
8 返回值:
9 成功:返回dest字符串的首地址
10 失败:NULL



(8)strcat()



1 #include <string.h>
2 char *strcat(char *dest, const char *src);
3 功能:将src字符串连接到dest的尾部,‘\0’也会追加过去
4 参数:
5 dest:目的字符串首地址
6 src:源字符首地址
7 返回值:
8 成功:返回dest字符串的首地址
9 失败:NULL



(9)strncat()


1 #include <string.h>
2 char *strncat(char *dest, const char *src, size_t n);
3 功能:将src字符串前n个字符连接到dest的尾部,‘\0’也会追加过去
4 参数:
5 dest:目的字符串首地址
6 src:源字符首地址
7 n:指定需要追加字符串个数
8 返回值:
9 成功:返回dest字符串的首地址
10 失败:NULL



(10)strcmp()



1 #include <string.h>
2 int strcmp(const char *s1, const char *s2);
3 功能:比较 s1 和 s2 的大小,比较的是字符ASCII码大小。
4 参数:
5 s1:字符串1首地址
6 s2:字符串2首地址
7 返回值:
8 相等:0
9 大于:>0
10 小于:<0



(11)strncmp()



1 #include <string.h>
2 int strncmp(const char *s1, const char *s2, size_t n);
3 功能:比较 s1 和 s2 前n个字符的大小,比较的是字符ASCII码大小。
4 参数:
5 s1:字符串1首地址
6 s2:字符串2首地址
7 n:指定比较字符串的数量
8 返回值:
9 相等:0
10 大于: > 0
11 小于: < 0



(12)sprintf()



1 #include <stdio.h>
2 int sprintf(char *str, const char *format, ...);
3 功能:根据参数format字符串来转换并格式化数据,然后将结果输出到str指定的空间中,直到出现字符串结束符 '\0' 为止。
4 参数:
5 str:字符串首地址
6 format:字符串格式,用法和printf()一样
7 返回值:
8 成功:实际格式化的字符个数
9 失败: - 1



(13)sscanf()



1 #include <stdio.h>
2 int sscanf(const char *str, const char *format, ...);
3 功能:从str指定的字符串读取数据,并根据参数format字符串来转换并格式化数据。
4 参数:
5 str:指定的字符串首地址
6 format:字符串格式,用法和scanf()一样
7 返回值:
8 成功:参数数目,成功转换的值的个数
9 失败: - 1



(14)strchr()



1 #include <string.h>
2 char *strchr(const char *s, int c);
3 功能:在字符串s中查找字母c出现的位置
4 参数:
5 s:字符串首地址
6 c:匹配字母(字符)
7 返回值:
8 成功:返回第一次出现的c地址
9 失败:NULL



(15)strstr()



1 #include <string.h>
2 char *strstr(const char *haystack, const char *needle);
3 功能:在字符串haystack中查找字符串needle出现的位置
4 参数:
5 haystack:源字符串首地址
6 needle:匹配字符串首地址
7 返回值:
8 成功:返回第一次出现的needle地址
9 失败:NULL



(16)strtok()



1 #include <string.h>
2 char *strtok(char *str, const char *delim);
3 功能:来将字符串分割成一个个片段。当strtok()在参数s的字符串中发现参数delim中包含的分割字符时, 则会将该字符改为\0 字符,当连续出现多个时只替换第一个为\0。
4 参数:
5 str:指向欲分割的字符串
6 delim:为分割字符串中包含的所有字符
7 返回值:
8 成功:分割后字符串首地址
9 失败:NULL



(17)atoi()



1 #include <stdlib.h>
2 int atoi(const char *nptr);
3 功能:atoi()会扫描nptr字符串,跳过前面的空格字符,直到遇到数字或正负号才开始做转换,而遇到非数字或字符串结束符('\0')才结束转换,并将结果返回返回值。
4 参数:
5 nptr:待转换的字符串
6 返回值:成功转换后整数



类似的函数有:
 atof():把一个小数形式的字符串转化为一个浮点数。
 atol():将一个字符串转化为long类型

二、函数

从函数定义的角度看,函数可分为系统函数和用户定义函数两种:

(1)系统函数,即库函数:这是由编译系统提供的,用户不必自己定义这些函数,可以直接使用它们,如我们常用的打印函数printf()。

(2)用户定义函数:用以解决用户的专门需要。

C基础学习笔记——01-C基础第07天(字符串处理函数和函数)_#include_03

 

 

多文件(分文件)编程

防止头文件重复包含?

为了避免同一个文件被include多次,C/C++中有两种方式,一种是 #ifndef 方式,一种是 #pragma once 方式。

方法一:



1 #ifndef __SOMEFILE_H__
2 #define __SOMEFILE_H__
3
4 // 声明语句
5
6 #endif



方法二:



1 #pragma once
2
3 // 声明语句



 

 

在学习C基础总结了笔记,并分享出来

标签:01,const,07,dest,char,地址,字符串,include,处理函数
From: https://blog.51cto.com/u_15405812/5849090

相关文章

  • C基础学习笔记——01-C基础第02天(用户权限、VI操作、Linux服务器搭建)
    在学习C基础总结了笔记,并分享出来。01-C基础第02天(用户权限、VI操作、Linux服务器搭建) 打开终端:ctrl+alt+t清屏:ctrl+l或clear在终端中退出锁定:ctrl+c 目录3常用命令4......
  • P3643 [APIO2016] 划艇
    题意给你两个序列\(a,b\),求严格递增的序列\(c\)的个数,满足:\(\foralli,c_i\in[a_i,b_i]\)。特别的,如果\(c_i=0\)则无视当前这个\(c_i\)。Solution好困难的dp,耗我......
  • 07.声明
    颜色字体font-weight粗细text-index缩进test-decoration:描述cursor:pointer鼠标放在字体上显示小手图标区块字的间距align-对齐尺寸定位relative......
  • Thread - 01 -浅谈synchronized的作用
    浅谈synchronized的作用售票demopublicclassdemo{publicstaticvoidmain(String[]args){Threadt1=newThread(newSaleThread(),"售票人员1")......
  • 2018-11-8-内置函数(2)
    主要内容一.1.locals()2.globals()3.complex4.binocthex5.abs6.divmod7.round8.pow(x,y,z=1)9.sum10.min/max11.reversed12.slice13.format14.bytes15.bytearray16.memory......
  • luogu P1224 [NOI2013] 向量内积
    题面传送门比较妙妙的题目。首先我们考虑\(k=2\),直接暴力没有优化方式,考虑随机化。我们随机一个向量的排列方式,将第\(i\)个向量和前面的向量求出内积之和\(\bmodk\)的......
  • ES8(2017)
     for(const[key,value]ofObject.entries(target)){  //需px单位基础样式  if(needUnit.includes(key)){   result[key]=unit(value)  ......
  • office2010添加宏到自定义快速访问工具栏
    1.建立相应的宏,名称分别:查找填充默认  2.点击“文件”菜单,“选项”卡  3.选择“快速访问工具栏”4.从“从下列位置选择命令”,选择“宏”5.则刚才的宏名自动出......
  • P2827 NOIP2016 提高组 蚯蚓
    P2827NOIP2016提高组蚯蚓-洛谷|计算机科学教育新生态(luogu.com.cn)事实上,本题疑似所有题解和lyd蓝书上的证明均有误,本篇题解将给出一个严谨的单调性正确性证明......
  • 转载 有人负责,才有质量:写给在集市中迷失的一代 李松峰 李松峰 2012-08-23
    原文:AGenerationLostintheBazaar (发表于ACMQueuevol.10,no.8,2012)作者:保尔-亨宁·凯普(Poul-HenningKamp)翻译:[@李松峰][2]感谢[@蔡学镛][3][@蒋涛CSDN][4]......