今天继续介绍字符数组
以下是一些常见的 C 语言字符串处理函数的介绍、函数本体、返回值、用法及实现示例:
以下是 puts 和 gets 函数的介绍、函数本体、返回值、用法及实现示例:
字符处理函数
puts() 函数
- 函数意思:将字符串输出到标准输出(通常是屏幕)并换行
- 函数本体: int puts(const char *str)
- 返回值:如果成功输出则返回非负数,否则返回 EOF
- 用法: puts("Hello");
- 实现:
int my_puts(const char *str) {
while (*str!= '\0') {
putchar(*str);
str++;
}
putchar('\n');
return 0;
}
gets() 函数
- 函数意思:从标准输入(通常是键盘)读取一行字符串到指定的字符数组中
- 函数本体: char *gets(char *str)
- 返回值:成功时返回输入字符串的指针,失败(例如输入缓冲区溢出)时返回 NULL
- 用法: char buf[100]; gets(buf);
- 实现(不建议使用,因为容易导致缓冲区溢出,以下是一个简单示例,实际应用中应避免):
char *my_gets(char *str) {
int c;
int i = 0;
while ((c = getchar())!= '\n' && c!= EOF) {
str[i++] = c;
}
str[i] = '\0';
return str;
}
需要注意的是,由于 gets 函数不能指定输入字符串的长度,容易导致缓冲区溢出的安全问题,在实际编程中应尽量避免使用 gets ,而使用更安全的输入函数,如 fgets 。
strlen() 函数
- 函数意思:计算字符串的长度(不包括末尾的'\0')
- 函数本体: size_t strlen(const char *str)
- 返回值:字符串的长度(以字符计)
- 用法: size_t len = strlen("hello");
- 实现:
size_t my_strlen(const char *str) {
size_t len = 0;
while (*str!= '\0') {
len++;
str++;
}
return len;
}
strcpy() 函数
- 函数意思:将源字符串复制到目标字符串
- 函数本体: char *strcpy(char *dest, const char *src)
- 返回值:返回目标字符串的指针
- 用法: char dest[20]; strcpy(dest, "hello");
- 实现:
char *my_strcpy(char *dest, const char *src) {
char *ptr = dest;
while (*src!= '\0') {
*dest = *src;
dest++;
src++;
}
*dest = '\0';
return ptr;
}
strcat() 函数
- 函数意思:将源字符串连接到目标字符串的末尾
- 函数本体: char *strcat(char *dest, const char *src)
- 返回值:返回目标字符串的指针
- 用法: char dest[20] = "hello"; strcat(dest, " world");
- 实现:
char *my_strcat(char *dest, const char *src) {
char *ptr = dest;
while (*dest!= '\0') {
dest++;
}
while (*src!= '\0') {
*dest = *src;
dest++;
src++;
}
*dest = '\0';
return ptr;
}
strcmp() 函数
- 函数意思:比较两个字符串
- 函数本体: int strcmp(const char *str1, const char *str2)
- 返回值:若 str1 小于 str2 ,返回负数;若 str1 等于 str2 ,返回 0;若 str1 大于 str2 ,返回正数。
- 用法: int result = strcmp("hello", "world");
- 实现:
int my_strcmp(const char *str1, const char *str2) {
while (*str1 && *str2 && (*str1 == *str2)) {
str1++;
str2++;
}
return (*str1 - *str2);
}
strchr() 函数
- 函数意思:在字符串中查找指定字符首次出现的位置
- 函数本体: char *strchr(const char *str, int c)
- 返回值:返回在字符串 str 中首次出现字符 c 的指针,如果未找到则返回 NULL 。
- 用法: char *ptr = strchr("hello", 'l');
- 实现:
char *my_strchr(const char *str, int c) {
while (*str!= '\0') {
if (*str == c) {
return (char *)str;
}
str++;
}
return NULL;
}
二维数组
二维数组是一种数组结构,它可以看作是由多个一维数组组成的数组。
在 C 语言中,二维数组的声明方式例如 int arr[3][4]; ,表示一个 3 行 4 列的整型二维数组。
初始化二维数组
1. 静态初始化:在定义二维数组时,直接给出初始化的值。
```
int arr[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
```
2. 动态初始化:在定义二维数组后,使用循环结构逐个为数组元素赋值。
```
int arr[3][3];
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
arr[i][j] = i * 3 + j + 1;
}
}
```
注意,如果数组大小未知或可变,也可以使用动态内存分配的方式来初始化二维数组。
二维数组可以用于表示表格、矩阵等具有多行多列的数据结构。通过两个索引可以访问其中的元素,例如 arr[i][j] ,其中 i 表示行索引, j 表示列索引。
在实际应用中,二维数组常用于图像处理、地图表示、矩阵运算等场景。
标签:const,函数,第八天,dest,嵌入式,char,重头,int,str From: https://blog.csdn.net/qq_64792908/article/details/140817488