memset和read
时间: 2023-12-01 12:43:50 浏览: 151
以下是对`memset`和`read`的介绍和演示:
1. `memset`函数
`memset`函数是C/C++语言中的一个函数,用于对一段内存空间进行初始化。其函数原型为:
```c
void *memset(void *s, int c, size_t n);
```
其中,`s`为指向待初始化内存空间的指针,`c`为初始化的值,`n`为初始化的字节数。该函数将`s`指向的内存空间的前`n`个字节全部初始化为`c`。
需要注意的是,由于`memset`函数按字节对内存块进行初始化,因此不能用它将int数组初始化为0和-1之外的其他值(除非该值高字节和低字节相同)。
以下是一个使用`memset`函数将数组初始化为0的例子:
```c
#include <stdio.h>
#include <string.h>
int main() {
int arr[10];
memset(arr, 0, sizeof(arr)); // 将arr数组的所有元素初始化为0
for (int i = 0; i < 10; i++) {
printf("%d ", arr[i]); // 输出:0 0 0 0 0 0 0 0 0 0
}
return 0;
}
```
2. `read`函数
`read`函数是Linux系统中的一个系统调用函数,用于从文件描述符中读取数据。其函数原型为:
```c
ssize_t read(int fd, void *buf, size_t count);
```
其中,`fd`为文件描述符,`buf`为读取数据的缓冲区,`count`为要读取的字节数。该函数将从文件描述符`fd`中读取最多`count`个字节的数据,并将其存储到`buf`指向的缓冲区中。
以下是一个使用`read`函数从文件中读取数据的例子:
```c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
int main() {
int fd = open("test.txt", O_RDONLY); // 打开文件test.txt
if (fd == -1) {
perror("open");
exit(1);
}
char buf[1024];
ssize_t n = read(fd, buf, sizeof(buf)); // 从文件中读取数据
if (n == -1) {
perror("read");
exit(1);
}
printf("%s", buf); // 输出读取到的数据
close(fd); // 关闭文件
return 0;
}
```
阅读全文