0

私の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;
}
4

2 に答える 2