代码:
| USERID | Metric | Score |
----------------------------------
| 20511 | Sales | 12 |
| 20511 | Leads | 9 |
| 20511 | Hours | 8 |
| 20694 | Sales | 10 |
| 20694 | Hours | 7.5 |
这样做的正确方法是什么? 任何帮助表示赞赏
答案 0 :(得分:1)
使用strcat(dateTime, incoming[0-1]);
,其中incoming[0-1]
与incoming[-1]
相同会导致未定义的行为。实际上incoming[-1]
是位于数组索引-1
的单个字符,这是错误的原因,编译器无法将单个字符(char
)转换为char指针({{ 1}})。
改为使用:
char*
注意strncat(dateTime, incoming, 2);
中的n
。这将连接从strncat
到incoming
的最多两个字符,并放置一个终止的空字符。
<强>扩展强>
您可以将其扩展为:
dateTime
其中strncat(dateTime, incoming + n, l);
是起始索引,即之前为零,n
是要复制的最大长度。
示例强>
因此,如果要将索引3和4的字符连接起来,请执行以下操作:
l
答案 1 :(得分:1)
确切的错误消息来自incoming[0-1]
属于char
类型的事实,但strcat
期望const char*
作为第二个参数,这是指向{的指针{1}}。
此处附加char
不是问题,因为非const值总是可以转换为const值。
查看有关const
无效的其他答案/评论。