【发布时间】:2019-11-19 13:52:41
【问题描述】:
我想将int内存从一个程序转移到另一个程序:
这就是我获得int 内存分配的方式,我想打印它:
ioresult main (char *params) {
int year=0, month=0, day=0, hour=0 ,min=0, i=0;
char * token;
char *p = params;
printf("DateMethod: %s\n",params);
token = strtok(params, " ");
while( token != NULL ) {
printf( " %s\n", token );
if(i == 0) {
year = (void *)(strtol(token, NULL, 0));
} else if(i == 1) {
month = (void *)(strtol(token, NULL, 0));
} else if(i == 2) {
day = (void *)(strtol(token, NULL, 0));
} else if(i == 3) {
hour = (void *)(strtol(token, NULL, 0));
} else if(i == 4) {
min = (void *)(strtol(token, NULL, 0));
}
token = strtok(NULL, " ");
i++;
}
printf("Method Date: %d-%02d-%02d %02d:%02d\n", year, month, day, hour, min);
return S_OK;
}
params 打印给我看:
DateMethod: 0x904 0x905 0x906 0x907 0x908
但在另一个printf 我明白了:
Method Date: 2309-2310-2311 2312:00
这不是 int 中的值。知道是什么问题吗?
【问题讨论】:
-
如果您的输入字符串有十六进制数据为
0x904,那么strtol无法解析。 -
为什么要将值转换为
(void *)? -
main的原型是int main(int argc, char* argv[]),将 strtol 的结果转换为(void*)很奇怪,将转换结果分配给int更奇怪(并且不应该编译)。 -
"我想将 int 内存从一个程序转移到另一个程序" 嗯?这与这段代码有什么关系?我不明白你在做什么。您要解决的问题是什么?通过 IPC 传输整数?
-
代码与问题不对应,声称的输出与代码不对应。
标签: c pointers memory-address