我正在为'C'代码进行组件测试。我已经阅读了 strtok_r 函数的功能,但是我无法获得我希望在 strncmp '函数中传递的返回值。我的代码包含 strtok_r 和 strncmp 函数,如下所示:
typedef struct BufferN {
uint32_t v;
uint32_t m;
} My_Buffer;
char subsystemstr[64] = { '\0' };
My_Buffer buffer;
char *p_system;
char *p_subsystem;
(void) GetString(&buffer, subsystemstr, sizeof(subsystemstr));
p_system = strtok_r (subsystemstr, ":", &p_subsystem);
for (i = 0u; i < 100; i++)
{
if (strncmp(p_system, "all", 64) == 0)
{
/*Some Code Statement*/
}
}
由于数组 subsystemstr 被初始化为'\ 0',我正在函数 GetString 的帮助下修改此数组值,如下所示:
strncpy(subsystemstr, "all:", 64);
当我打印 subsystemstr 时,我将更新的数组更新为:
["all:", '\0' <repeats 59 times>]
但是当我打印 p_system (返回strtok_r的值)时。我正在
[0x388870 ""]
我很困惑它是如何工作的。实际上我想要p_system = “all”的值,这样'strncmp'函数可以返回0。 请建议。
答案 0 :(得分:1)
我怀疑你对
的理解PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init];
options.resizeMode = PHImageRequestOptionsResizeModeExact;
[self.imageManager requestImageForAsset:asset
targetSize:AssetGridThumbnailSize
contentMode:PHImageContentModeAspectFill
options:options
resultHandler:^(UIImage *result, NSDictionary *info) {
// Only update the thumbnail if the cell tag hasn't changed.
// Otherwise, the cell has been re-used.
if (cell.tag == currentTag) {
cell.imageView.contentMode = UIViewContentModeScaleAspectFill;
cell.imageView.image = result;
}
}];
实际上(打印p_system的地址)
在gdb中,命令将是
p p_system
或使用builtin printf命令
p *p_system
或使用C函数
printf "%s", p_system
,或者
call printf("%s", p_system)
或者,如果您不介意也看到一些地址值
call (void)puts(p_system)