#include<iomanip> #include <iostream> #include "reader.h" char* Reader::getname() { return name; } int Reader::getnote() { return note; } int Reader::getnumber() { return number; } void Reader::setname(char na[]) { strcpy(name, na); } void Reader::addreader(int n, char* na) { note = 0; number = n; strcpy(name, na); for (int i = 0; i < Maxbor; i++) borbook[i] = 0; } void Reader::delreader() { note = 1; } int Reader::borrowbook(int bookid) { for (int i = 0; i < Maxbor; i++) { if (borbook[i] == 0) { borbook[i] = bookid; return 1; } } cout << "已借满5本,请在归还后图书后借书!" << endl; return 0; } int Reader::retbook(int bookid) { for (int i = 0; i < Maxbor; i++) { if (borbook[i] == bookid) { borbook[i] = 0; return 1; } } return 0; } void Reader::list() { cout << setw(5) << number << setw(10) << name << "借书编号:["; for (int i = 0; i < Maxbor; i++) if (borbook[i] == 0)cout << borbook[i] << ""; cout << "]" << endl; }这段代码中用其他函数替代strcoy函数
时间: 2024-01-22 09:02:39 浏览: 120
vc++2008编译不了#include<iostream.h>头文件
4星 · 用户满意度95%
在这段代码中,可以使用 `strncpy` 函数来替代 `strcpy` 函数。`strncpy` 函数可以复制指定长度的字符串到目标字符数组中,从而避免了缓冲区溢出的风险。使用 `strncpy` 函数的示例代码如下:
```
void Reader::setname(char na[]) {
strncpy(name, na, sizeof(name) - 1); // 复制 na 的内容到 name 中
name[sizeof(name) - 1] = '\0'; // 确保 name 字符数组以 '\0' 结尾
}
```
在上述代码中,`strncpy` 函数的第三个参数指定了要复制的字符数,即 `sizeof(name) - 1`,这样可以确保不会发生缓冲区溢出的情况。同时,为了确保 `name` 字符数组以 `'\0'` 结尾,需要在复制完字符串之后手动添加一个 `'\0'` 字符。
阅读全文