迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > C++ >

Arduino memset() 函数

作者:迹忆客 最近更新:2024/03/13 浏览次数:

本教程将讨论使用 Arduino 中的 memset() 函数将值的字节设置为目标。


Arduino 中的 memset() 函数

memset() 函数将值的字节设置为 Arduino 中的目标。该函数从给定值中获取特定数量的字节并将其存储在目标中。

语法:

memset(destination, value, N_bytes);

在上述语法中,memset() 函数将获取给定值的第一个 N_bytes 并将其存储在 destination 中。如果值是整数或任何其他数据类型,它将被转换为字节数据类型。

我们将创建一个整数数组并使用 memset() 函数更改其值。

代码:

int ch1[4] = {1, 2, 3, 4};

void setup() {
  Serial.begin(9600);
  memset(ch1, 2, 4 * sizeof(ch1[1]));
  for (int i = 0; i < 4; i++) {
    Serial.println(ch1[i]);
  }
}
void loop() {}

输出:

514
514
514
514

我们定义了一个整数数组并使用 memset() 函数将所有四个元素替换为整数 2 的字节。我们使用循环在 Arduino IDE 的串行监视器窗口上打印数组的值。

我们还可以使用 int() 函数将字节值转换为整数。我们必须将每个数组值存储到一个字节变量中,然后将其传递给 int() 函数以将其转换为整数。

让我们将上面的数组值转换为整数。

代码:

int ch1[4] = {1, 2, 3, 4};

void setup() {
  Serial.begin(9600);
  memset(ch1, 2, 4 * sizeof(ch1[1]));
  for (int i = 0; i < 4; i++) {
    byte b = ch1[i];
    int c = int(b);
    Serial.println(c);
  }
}
void loop() {}

输出:

2
2
2
2

字节值已转换为整数,但它们并未存储在原始数组中。我们也可以使用 memset() 函数对字符串和字符执行相同的操作。

我们可以定义一个字符数组,并使用 memset() 函数将它们替换为另一个字符。

使用 memset() 函数后,我们将获得一个包含字符的字节值的数组,但我们可以使用 char() 函数将该值转换回字符。

我们必须将每个字节值存储在一个字节变量中,然后将其传递给 char() 函数以将其转换为字符。让我们定义一个整数数组,存储字符值,然后用另一个替换它们。

代码:

int ch1[4] = {'a', 'b', 'c', 'd'};

void setup() {
  Serial.begin(9600);
  memset(ch1, '.', 4 * sizeof(ch1[1]));
  for (int i = 0; i < 4; i++) {
    byte b = ch1[i];
    char c = char(b);
    Serial.println(c);
  }
}
void loop() {}

输出:

.
.
.
.

在第三个参数中,我们相乘的整数定义了我们要在数组中替换的值的数量。如果我们不想替换所有值而只想替换数组中的一些值,我们必须在 memset() 函数的第一个参数中添加一个整数。

假设我们只想替换给定数组的第二个和第三个值。我们必须在第一个参数中添加 1,并在第三个参数中将其乘以 2

代码:

int ch1[4] = {'a', 'b', 'c', 'd'};

void setup() {
  Serial.begin(9600);
  memset(ch1 + 1, '.', 2 * sizeof(ch1[1]));
  for (int i = 0; i < 4; i++) {
    byte b = ch1[i];
    char c = char(b);
    Serial.println(c);
  }
}
void loop() {}

输出:

a
.
.
d

仅替换数组的中间元素。我们还可以使用循环将值存储在数组中。

在下面的示例中,让我们使用 Arduino 中的循环来执行上述操作。

代码:

char ch1[4] = {'a', 'b', 'c', 'd'};

void setup() {
  Serial.begin(9600);
  for (int i = 1; i < 3; i++) {
    ch1[i] = '.';
  }
  for (int i = 0; i < 4; i++) {
    Serial.println(ch1[i]);
  }
}
void loop() {}

输出:

a
.
.
d

在上面的代码中,我们将数组定义为 char 数据类型,使用循环替换元素,并使用另一个循环打印数组元素。如果我们使用 int 来声明给定的数组,字符将被转换为 ASCII 表示。

我们必须使用循环来打印数组的值,但是在字符串的情况下我们可以不使用循环来打印它。我们可以使用循环替换字符串中存在的字符。

我们必须使用索引获取要替换的字符,然后使用另一个字符替换它们。让我们定义一个字符串并用另一个替换它的一些字符。

代码:

String ch1 = "hello world";

void setup() {
  Serial.begin(9600);
  for (int i = 1; i < 5; i++) {
    ch1[i] = '.';
  }
  Serial.println(ch1);
}
void loop() {}

输出:

h.... world

给定字符串的某些字符被另一个字符替换。在 memset() 函数的情况下,我们使用 int 数据类型定义给定数组,因为该函数不适用于其他数据类型数组。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Arduino 中停止循环

发布时间:2024/03/13 浏览次数:166 分类:C++

可以使用 exit(0),无限循环和 Sleep_n0m1 库在 Arduino 中停止循环。

Arduino 复位

发布时间:2024/03/13 浏览次数:165 分类:C++

可以通过使用复位按钮,Softwarereset 库和 Adafruit SleepyDog 库来复位 Arduino。

Arduino 的字符转换为整型

发布时间:2024/03/13 浏览次数:116 分类:C++

可以使用简单的方法 toInt()函数和 Serial.parseInt()函数将 char 转换为 int。

Arduino 串口打印多个变量

发布时间:2024/03/13 浏览次数:166 分类:C++

可以使用 Serial.print()和 Serial.println()函数在串口监视器上显示变量值。

Arduino if 语句

发布时间:2024/03/13 浏览次数:82 分类:C++

可以使用 if 语句检查 Arduino 中的不同条件。

Arduino ICSP

发布时间:2024/03/13 浏览次数:184 分类:C++

ICSP 引脚用于两个 Arduino 之间的通信以及对 Arduino 引导加载程序进行编程。

使用 C++ 编程 Arduino

发布时间:2024/03/13 浏览次数:100 分类:C++

本教程将讨论使用 Arduino IDE 在 C++ 中对 Arduino 进行编程。

Arduino 中的子程序

发布时间:2024/03/13 浏览次数:69 分类:C++

可以通过在 Arduino 中声明函数来处理子程序。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便