引数を取る値を保存する関数があります。入力を受け入れるには、 として、char*
次に を介して という 2 つの方法を実装する必要がありますstrncpy
。
すなわち: a . Add("123456/7890", "John", "Doe", "2000-01-01", "Main street", "Seattle");
strncpy を使用するまでは問題なく動作します。
bool status;
char lID[12], lDate[12], lName[50], lSurname[50], lStreet[50], lCity[50];
strncpy(lID, "123456/7890", sizeof ( lID));
strncpy(lName, "John", sizeof ( lName));
strncpy(lSurname, "Doe", sizeof ( lSurname));
strncpy(lDate, "2000-01-01", sizeof ( lDate));
strncpy(lStreet, "Main street", sizeof ( lStreet));
strncpy(lCity, "Seattle", sizeof ( lCity));
status = c . Add(lID, lName, lSurname, lDate, lStreet, lCity);
//is true
strncpy(lID, "987654/3210", sizeof ( lID));
strncpy(lName, "Freddy", sizeof ( lName));
strncpy(lSurname, "Kruger", sizeof ( lSurname));
strncpy(lDate, "2001-02-03", sizeof ( lDate));
strncpy(lStreet, "Elm street", sizeof ( lStreet));
strncpy(lCity, "Sacramento", sizeof ( lCity));
// notice, that I don't even save it at this point
strncpy(lID, "123456/7890", sizeof ( lID));
strncpy(lDate, "2002-12-05", sizeof ( lDate));
strncpy(lStreet, "Sunset boulevard", sizeof ( lStreet));
strncpy(lCity, "Los Angeles", sizeof ( lCity));
status = c . Resettle(lID, lDate, lStreet, lCity);
status = c . Print(cout, "123456/7890");
//is true
この時点で、ID 123456/7890 の値を出力したいので、Name:John、Surname:Doe などです。それでも、最後の値として保存された値が出力されます。
123456/7890 Freddy Kruger
2002-12-05 Sunset boulevard Los Angeles
2002-12-05 Sunset boulevard Los Angeles
MyAdd
は次のように宣言されます。
bool Add(const char * id,
const char * name,
const char * surname,
const char * date,
const char * street,
const char * city);
Resettle
関数は と同様に遅れますがAdd
、名前と姓の引数を取らないだけです。すべての値はchar **
配列に保存されます。
両方の入力を適切に受け入れることができるように、この状況を処理する方法を教えてください。
Ps:char*
入力については、プログラム全体が問題なく動作するので、バグはないと思います..したがって、私は char* などを使用します...