zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C语言教程学习36-40节 字符串函数+结构

C语言教程学习 函数 字符串 结构 40 36
2023-06-13 09:13:42 时间

36.const关键词

const 变量 禁止修改

37.字符串处理函数

#include <string.h>
strlen函数
strlen 与sizeof

C 库函数 - strcat()

声明

下面是 strcat() 函数的声明。

char *strcat(char *dest, const char *src)

参数

  • dest -- 指向目标数组,该数组包含了一个 C 字符串,且足够容纳追加后的字符串。
  • src -- 指向要追加的字符串,该字符串不会覆盖目标字符串。

返回值

该函数返回一个指向最终的目标字符串 dest 的指针。

strcat()例子

C 库函数 - strcpy()

C 库函数 char *strcpy(char *dest, const char *src) 把 src 所指向的字符串复制到 dest。

需要注意的是如果目标数组 dest 不够大,而源字符串的长度又太长,可能会造成缓冲溢出的情况。

strcpy()实例

C 库函数 - strcmp()

C 库函数 int strcmp(const char *str1, const char *str2) 把 str1 所指向的字符串和 str2 所指向的字符串进行比较。

该函数返回值如下:

  • 如果返回值小于 0,则表示 str1 小于 str2。
  • 如果返回值大于 0,则表示 str1 大于 str2。
  • 如果返回值等于 0,则表示 str1 等于 str2。
strcmp()实例

38.实现字符串处理函数

本节目标

39.初识结构化数据

数组声明
访问结构

40.结构

结构初始化
结构数组
结构嵌套
指向结构的指针, 用->调用

6. 结构在函数中传递

对比下面两段代码

struct person{
  char name[20];
  int gender;
  double height;
  double weight;
};
void change(struct person per)
{
  strcpy(per.name, "david");
  per.gender = 1;
  per.height = 175.00;
  per.weight = 65.00;
}
int main()
{
  struct person timmy = {"timmy", 1, 170.00, 60.00};
  change(timmy);
  printf("%s\n", timmy.name);
  printf("%d\n", timmy.gender);
  printf("%.2f\n", timmy.height);
  printf("%.2f\n", timmy.weight);
  return 0;
}
struct person{
  char name[20];
  int gender;
  double height;
  double weight;
};
void change(struct person *per)
{
  strcpy(per->name, "david");
  per->gender = 1;
  per->height = 175.00;
  per->weight = 65.00;
}
int main()
{
  struct person timmy = {"timmy", 1, 170.00, 60.00};
  change(&timmy);
  printf("%s\n", timmy.name);
  printf("%d\n", timmy.gender);
  printf("%.2f\n", timmy.height);
  printf("%.2f\n", timmy.weight);
}

第一种 我们将结构当作参数传入函数。在函数内部修改传入的参数。很显然,由于实参 timmy 与实参 per 是相互独立的。修改函数 change 内的 per 无法改动实参 timmy 。

但是,如果将 change 函数的参数改为指向结构的指针(第二种方法),情况就大不相同了。在函数 change 内部可以通过指针,找到结构变量 timmy 。并且,对其进行修改。