- 论坛徽章:
- 0
|
以下是测试代码,请帮看看
问题都在注释中标着呢
#include <stdlib.h>
typedef struct{
char item1[17];
char item2[17];
}items_for_select;
int select_item(char *dst, items_for_select src, int *current_idx)
{
printf("test1:%s, %s\n", items_for_select src.item1, items_for_select src.item2);
//这里的item1和item2都可以正确读到
*current_idx = ~*current_idx&1;
if (current_idx == 0)
memcpy(dst, src.item1, strlen(src.item1)); //!!!memcpy和strcpy都不可以copy,strlen(...)+1也不行
else if (current_idx == 1)
memcpy(dst, src.item2, strlen(src.item2)); //同上
printf("test2:current_idx = %d, dst = %s\n", *current_idx, dst); //dst依然是调用此函数之前的值
return 0;
}
int main(void)
{
int select_idx = 1;
items_for_select rf_items_for_select[] = {
{ "1\n", "2\n" },
{ "ENABLE\n", "DISABLE\n" },
{ "SF", "DF" },
{ NULL, NULL },
{ "ON\n", "OFF\n" },
};
char a[17] = "SK|spawn";
memcpy(a, rf_items_for_select[1].item1, strlen(rf_items_for_select[1].item1));
printf("%s",a); //没问题,可以成功copy
strcpy(a, "SK|spawn");
select_item(a, rf_items_for_select[1], &select_idx);
printf("%s",a); //这里就copy不了
return 0;
}
[ 本帖最后由 idolspawn 于 2009-8-14 22:18 编辑 ] |
|