私のcomportstrがこのコードでガベージ値に変更されるのはなぜですか? 何も変更されていない場合、char 配列の値がどのように変更されるのかわかりません。これら 2 つの print ステートメントの間には他に何もありません。
int main(int argc, char* argv[])
{
char comportstr[10];
sprintf(comportstr,"COM%d",COMPORT_NUM);
if(DEBUGGING) fprintf(stderr,"str is: %s\n", comportstr); //prints str is: COM3
sprintf(curtime , "%s" , currentDateTime());
if(DEBUGGING) fprintf(stderr,"str is: %s\n", comportstr); //prints str is: ;32
}
currentDateTime の機能は次のとおりです。それはcomportstrをまったく変更しません。
// Gets current date/time, format is YYYY-MM-DD.HH;mm;ss
const std::string currentDateTime()
{
time_t now = time(0);
struct tm tstruct;
char buf[80];
tstruct = *localtime(&now);
// Visit http://www.cplusplus.com/reference/clibrary/ctime/strftime/
// for more information about date/time format
strftime(buf, sizeof(buf), "%Y-%m-%d.%H;%M;%S", &tstruct);
return buf;
}