有任何不懂的问题可以评论区留言,能力范围内都会一一回答
本章未将宏和函数详细区分,所有的宏均称为函数,不影响前期学习
后面会专门出一期关于宏的
1.字符分类函数
C语言中有一系列的函数是专门做字符分类的,也就是一个字符是属于什么类型的字符的。这些函数使用都需要包含一个头文件是#include<ctype.h>
如果是真返回非0值,如果为假返回0.
2.字符转换函数
C语言提供了两个字符转换函数:
int tolower(int c);//将参数传进去的大写字母转小写
int toupper(int c);//将参数传进去的小写字母转大写
3.字符输入输出函数
像printf和scanf一样c语言也有专门处理字符输入输出的函数
这两个函数是getchar和putchar
getchar 的用法
功能 :
getchar 用于从标准输入(通常是键盘)读取一个字符。
它会等待用户输入一个字符并按回车键确认。
读取的字符是 ASCII 编码的整数值。
语法 :
int getchar(void);
返回值 :
正常情况下,返回用户输入的字符的 ASCII 码值。
如果遇到文件结束符(EOF,通常由 Ctrl+Z 或 Ctrl+D 触发),则返回 EOF(即 -1)。
putchar 的用法
功能 :
putchar 用于向标准输出(通常是终端或控制台)打印一个字符。
语法 :
int putchar(int character);
参数 :
character 是要打印的字符的 ASCII 码值。
返回值 :
成功时返回打印字符的 ASCII 码值。
失败时返回 EOF(即 -1)。
缓冲区影响 :
getchar 每次读取一个字符,如果用户输入多个字符,其余字符会保留在缓冲区中,供后续 getchar 调用读取。
这意味着,除非用户输入回车,否则 getchar 不会停止读取。
文件结束符 :
在输入流中遇到文件结束符(EOF)时, getchar 会立即停止并返回 EOF。
由上我们可以写一串代码来对字符串进行输入输出
#define _CRT_SECURE_NO_WARNING
#include <stdio.h>
int main(void)
{
char a;
while ((a=getchar())!='#')
{
putchar(a);
}
return 0;
}
4.字符串输入输出函数
这两个函数是gets和puts
gets函数
gets 是一个C标准库函数,用于从标准输入设备(通常是键盘)读取一行字符串,并将换行符存储在缓冲区中。其声明如下:
char *gets(char *str);
参数 str 是一个指向字符串的指针,用于存储读取的字符串。 gets 函数会一直读取,直到遇到换行符为止,并在读取后自动添加一个NULL字符。
puts函数
puts 也是一个C标准库函数,用于打印一个字符串,并在字符串末尾自动添加一个换行符。其声明如下:
int puts(const char *str);
参数 str 是一个常量字符串指针,指向要打印的字符串。
这个地方我们直接上一段代码方便大家理解其用法
#define _CRT_SECURE_NO_WARNING
#include <stdio.h>
int main(void)
{
char arr[10];
gets(arr);
puts(arr);
puts("hello world");
return 0;
}
5,以学过的字符和字符串函数
最后我们回顾一下以前学过的字符串函数
(1)strcmp
strcmp比较的不是字符串的长度而是对应字符的大小
strcmp函数的头文件是#include <string.h>
函数定义 :int strcmp(const char *str1, const char *str2);
这里的 const char* 表示两个参数 str1 和 str2 都是指向字符的指针,并且这些字符都以空字符'\0'结尾。(\0的ASCII码值是0)
函数功能 :
strcmp函数会从两个字符串的首地址开始,逐个比较它们对应位置的字符的ASCII码值,直到遇到不同的字符或者其中一个字符串结束。如果 str1 小于 str2 ,则函数返回一个负值;如果两个字符串相同,函数返回0;如果 str1 大于 str2 ,则函数返回一个正值。
(2)strlen
strlen |
1.strlen是库函数 2.strlen是求字符串长度的,统计的是\0之前的字符个数 3.关注内存中是否有\0,如果没有\0,就会持续往后找,可能会越界 4.该函数的返回值是size_t,是无符号的 5.strlen函数需要有头文件#include<string.h> |