labwindows项目中遇到的情况,需要把时间转换为“时分秒”显示。
memcpy:
#include <ansi_c.h>
#include <cvirte.h>
#include <userint.h>
#include "test.h"
static int panelHandle;
char* doubletostring(int a)
{
char b[50];
int hour,minute,second;
hour=a/3600;
minute=(a%3600)/60;
second=(a%3600)%60;
sprintf(b,"%d小时%d分钟%d秒钟",hour,minute,second);
return b;
}
int main (int argc, char *argv[])
{
if (InitCVIRTE (0, argv, 0) == 0)
return -1; /* out of memory */
if ((panelHandle = LoadPanel (0, "test.uir", PANEL)) < 0)
return -1;
char p[50]="XX时XX分XX秒";
memcpy(p,doubletostring(122859),sizeof(p));
//strncpy(p,doubletostring(122859),sizeof(p)) ;
SetCtrlVal(panelHandle,PANEL_TEXTMSG,p);
DisplayPanel (panelHandle);
RunUserInterface ();
DiscardPanel (panelHandle);
return 0;
}
int CVICALLBACK quit (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
QuitUserInterface (0);
break;
}
return 0;
}
strncpy:
#include <ansi_c.h>
#include <cvirte.h>
#include <userint.h>
#include "test.h"
static int panelHandle;
char* doubletostring(int a)
{
char b[50];
int hour,minute,second;
hour=a/3600;
minute=(a%3600)/60;
second=(a%3600)%60;
sprintf(b,"%d小时%d分钟%d秒钟",hour,minute,second);
return b;
}
int main (int argc, char *argv[])
{
if (InitCVIRTE (0, argv, 0) == 0)
return -1; /* out of memory */
if ((panelHandle = LoadPanel (0, "test.uir", PANEL)) < 0)
return -1;
char p[50]="XX时XX分XX秒";
//memcpy(p,doubletostring(122859),sizeof(p));
strncpy(p,doubletostring(122859),sizeof(p)) ;
SetCtrlVal(panelHandle,PANEL_TEXTMSG,p);
DisplayPanel (panelHandle);
RunUserInterface ();
DiscardPanel (panelHandle);
return 0;
}
int CVICALLBACK quit (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
QuitUserInterface (0);
break;
}
return 0;
}
strcpy:
#include <ansi_c.h>
#include <cvirte.h>
#include <userint.h>
#include "test.h"
static int panelHandle;
char* doubletostring(int a)
{
char b[50];
int hour,minute,second;
hour=a/3600;
minute=(a%3600)/60;
second=(a%3600)%60;
sprintf(b,"%d小时%d分钟%d秒钟",hour,minute,second);
return b;
}
int main (int argc, char *argv[])
{
if (InitCVIRTE (0, argv, 0) == 0)
return -1; /* out of memory */
if ((panelHandle = LoadPanel (0, "test.uir", PANEL)) < 0)
return -1;
char p[50]="XX时XX分XX秒";
//memcpy(p,doubletostring(122859),sizeof(p));
strcpy(p,doubletostring(122859)) ;
SetCtrlVal(panelHandle,PANEL_TEXTMSG,p);
DisplayPanel (panelHandle);
RunUserInterface ();
DiscardPanel (panelHandle);
return 0;
}
int CVICALLBACK quit (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
QuitUserInterface (0);
break;
}
return 0;
}
哪位能来解释下为什么?