PingShanJuShi 2015-06-21 02:02 采纳率: 25%
浏览 1653

字符串操作出现意外状况

操作系统为win7,开发工具为vs2010,C语言中我定义了一个结构体,typedef struct amqp_init{
char exchange[20];
char routekey[20];
char type[10];
amqp_socket_t* socket;
amqp_connection_state_t conn;
amqp_basic_properties_t props;
amqp_queue_declare_ok_t* havequeue;
struct amqp_connection_info conn_info;
}amqpinit;然后通过strcpy或者strcpy_s赋值给里面的exchange和routekey还有type

struct amqp_init* const cy_amqpinit;(已经申请过空间了,由于无关问题就不写出来了)
exchange = "cy.innerSendExchangeOne";
routekey = "cy.innerSendQueueOne";
 strcpy_s(cy_amqpinit->exchange,strlen(exchange) + 1,exchange);
    strcpy_s(cy_amqpinit->routekey,strlen(routekey) + 1,routekey);
    strcpy_s(cy_amqpinit->type,strlen("direct") + 1,"direct");

发现运行第二句的时候会将routekey的值添加到刚赋值过的cy_amqpinit->exchange后面,运行到第三句时也会将“direct”添加到赋值过的cy_amqpinit->routekey和cy_amqpinit->exchange后面。所以本来应该是
cy_amqpinit->exchange = "cy.innerSendExchangeOne";
cy_amqpinit->routekey = "cy.innerSendQueueOne";
结果现在变成
cy_amqpinit->exchange = "cy.innerSendExchangeOnecy.innerSendQueueOnedirect";
cy_amqpinit->routekey = "cy.innerSendQueueOnedirect";
另外三句strcpy语句中间没有任何语句了,求有经验的大神指教

  • 写回答

2条回答

  • oyljerry 2015-06-21 05:03
    关注

    你exchange等只有20的长度空间,strcpy_s复制的字符串长度超过了,越界了。

    评论

报告相同问题?

悬赏问题

  • ¥15 孟德尔随机化结果不一致
  • ¥20 求用stm32f103c6t6在lcd1206上显示Door is open和password:
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法