我有这样的结构:
typedef struct {
char gpsTime[6];
char gpsStatus[1];
char gpsLat[10];
char gpsLong[10];
char gpsSpeed[5];
char gpsDate[6];
} gpsData;
,还有一个我想在其中连接此结构的元素的字符串:
#define MESSAGESIZE 100
// Final message to be sent
char message[MESSAGESIZE]="$STARTOFMSG,23,";
问题是,当我使用这样的“ strcat”函数时:
strcat(message,data.gpsTime);
我希望有这样的东西:
"$STARTOFMSG,23,083559";
,但结构的全部元素是串联在一起的,即:
"$STARTOFMSG,23,,083559A4717.1143700833.91520.004091202#@";
我猜这是指针的问题。我该怎么解决?
答案 0 :(得分:2)
我猜gpsTime
没有正确终止,即它不是有效的C字符串。这将导致不确定的行为。
如果您期望它如图所示为"083559"
,则不能为char gpsTime[6]
,因为这样就没有终结符的余地了。它必须是char gpsTime[7]
或更大。当然,这适用于所有字符串。带有n
个字符的C字符串必须有n + 1
chars
个空格,因为最后一个必须为\0
才能终止该字符串。
答案 1 :(得分:1)
`http://jsfiddle.net/mr6dyh94/2/`
复制字符串直到strcat
终止符。添加终止字符,它应该可以工作。
/0
已经是6个字符,因此您需要将083559
定义为gpsTime
并添加char gpsTime[7]
终止字符。