Strcat附加整个结构而不是一个元素

时间:2018-10-03 08:27:28

标签: c string pointers

我有这样的结构:

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#@";

我猜这是指针的问题。我该怎么解决?

2 个答案:

答案 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]终止字符。