有关函数“strcpy”规范的详细信息和可能的解决方案

Details about the specification of the function "strcpy'' and possible solution

我想将 中的字符串复制到 strs

#include<iostream>
#include<fstream>
#include<string.h>
using namespace std;

#define N 100
void readAndWrite();

int main() {
    readAndWrite();
    return 0;
}

void readAndWrite() {
    fstream in;
    char* strs[100];
    for (int i = 0; i < N; i++) {
        strs[i] = (char*)calloc(128,sizeof(char));
    }

    in.open("A.in");
    if (!in) {
        cout << "fail" << endl;
        exit(-1);
    }

    char line[128];
    in.getline(line, 128);
    **strcpy(strs[0], line);**
    cout << "line:" << strs[0] << endl;

    int count = 1;
    while (!in.eof()) {
        in.getline(line, 128);
        **strcpy(strs[count++], line);**
        cout << "line:" << strs[count - 1] << endl;
    }
}

我收到一份报告说 strcpy 不安全,这表明

"strs [0]" may be "0": This does not conform to the specification of the function "strcpy".

我怎样才能使我的代码工作

您忘记检查 calloc 的 return 值,这就是编译器告诉您它可能为零(空)的原因,以防没有足够的内存可供分配。