问题
For some reason a char cant go in strcopy_s();...
#include <iostream>
#include <cstring>
using namespace std;
struct DATE {
int year;
int month;
int date;
};
struct Book {
char name[50];
char author[50];
int id;
DATE date;
};
int main() {
Book book1;
DATE date1;
char bookName, bookAuthor;
int date, year, month;
cout << "Date Of Publishing? " << endl;
cin >> date;
cout << "Month Of Publishing?" << endl;
cin >> month;
cout << "Year Of Publishing?" << endl;
cin >> year;
date1.year = year;
date1.month = month;
date1.date = date;
cout << "Book Name ? " << endl;
cin >> bookName;
cout << "Book Author" << endl;
cin >> bookAuthor;
strcpy_s(book1.name, bookName);
strcpy_s(book1.author, bookAuthor);
return 0;
}
Gives me the error:
Severity Code Description Project File Line Suppression State
Error (active) no instance of overloaded function "strcpy_s" matches the argument list Struct c:\Users\Amanuel\Documents\Visual Studio 2015\Projects\Struct\Struct\Source.cpp 38
Severity Code Description Project File Line Suppression State
Error (active) no instance of overloaded function "strcpy_s" matches the argument list Struct c:\Users\Amanuel\Documents\Visual Studio 2015\Projects\Struct\Struct\Source.cpp 39
Severity Code Description Project File Line Suppression State
Error C2665 'strcpy_s': none of the 2 overloads could convert all the argument types Struct c:\users\amanuel\documents\visual studio 2015\projects\struct\struct\source.cpp 38
Severity Code Description Project File Line Suppression State
Error C2665 'strcpy_s': none of the 2 overloads could convert all the argument types Struct c:\users\amanuel\documents\visual studio 2015\projects\struct\struct\source.cpp 39
回答1:
Correct. strcpy
and its family take char*
, not char
. They work on C strings. And you can't generally put a bookName
into a single character anyway.
That said, welcome to the 21st century. We use std::string
now, far easier.
来源:https://stackoverflow.com/questions/36756336/no-instance-of-overloaded-function-strcpy-s-matches-the-argument-list