strtok_r函数如何返回值?

时间:2015-11-11 18:17:13

标签: c++ c

我正在为'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。 请建议。

1 个答案:

答案 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)