int add_sendFile(struct in_addr* sin_addr, char name[]){ struct stat buf; struct sendfile* newFile = NULL; struct sendfile* rear = send_filelist_head; static unsigned int file_num=0; stat(name,&buf); if ( (newFile = (struct sendfile*)malloc(sizeof(struct sendfile))) == NULL ) { printf("newFile failed!\n"); return 1; } newFile->sin_addr.s_addr = sin_addr->s_addr; strncpy(newFile->name, name, 20); newFile->num=file_num; newFile->pkgnum=time(NULL); newFile->size=buf.st_size; newFile->ltime=buf.st_mtime; while (rear->next != NULL) { rear = rear->next; } rear->next = newFile; newFile->next = NULL; return 0;}请逐行注释一下代码
时间: 2024-03-21 13:38:53 浏览: 83
ptr_struct_file.c与buff_type_test.c_ptr_struct_file_源代码_buff_type
好的,下面是逐行注释这段代码:
```c
int add_sendFile(struct in_addr* sin_addr, char name[]) {
// 定义变量和指针
struct stat buf; // 用于存储文件信息的结构体
struct sendfile* newFile = NULL; // 新建的文件结构体指针
struct sendfile* rear = send_filelist_head; // 链表的尾指针
static unsigned int file_num = 0; // 静态变量,用于给新文件编号
// 获取文件信息
stat(name, &buf); // 获取文件信息,存储在 buf 结构体中
// 动态分配一个 sendfile 结构体
if ((newFile = (struct sendfile*)malloc(sizeof(struct sendfile))) == NULL) {
// 分配失败,输出错误信息并返回 1
printf("newFile failed!\n");
return 1;
}
// 填充结构体信息
newFile->sin_addr.s_addr = sin_addr->s_addr; // 存储发送方 IP 地址
strncpy(newFile->name, name, 20); // 存储文件名,最多存储 20 个字符
newFile->num = file_num; // 存储文件编号
newFile->pkgnum = time(NULL); // 存储当前时间作为文件的包编号
newFile->size = buf.st_size; // 存储文件大小
newFile->ltime = buf.st_mtime; // 存储文件最后修改时间
// 将结构体加入链表末尾
while (rear->next != NULL) { // 找到链表的末尾
rear = rear->next;
}
rear->next = newFile; // 将新节点加入链表的末尾
newFile->next = NULL;
// 返回操作结果
return 0;
}
```
阅读全文