将具有NULL字节的C字符串转换为char数组

我正在使用具有多个选择function的GetOpenFileName 。 挑选的文件在LPSTR中返回。 在此LPSTR中,所选文件由NULL字节分隔。 我想将LPSTR拆分成一个数组,然后遍历该数组。

在PHP中我会这样做:

  $array = explode("\0", $string); 

但由于我是C的新手,我不知道自己在做什么。

你可以这样做循环字符串:

 char *Buffer; // your null-separated strings char *Current; // Pointer to the current string // [...] for (Current = Buffer; *Current; Current += strlen(Current) + 1) printf("GetOpenFileName returned: %s\n", Current); 

如果确实需要,您可以调整此代码以创建数组。

最简单的做法可能就是直接循环返回的字符串。 (不需要创建单独的数组。)代码看起来像这样(忽略错误检查):

 GetOpenFileName( &ofn ); LPSTR pszFileName = ofn.lpstrFile; while( *pszFileName != 0 ) { // do stuff... pszFileName += strlen( pszFileName ) + 1; } 

另外,不要忘记,如果用户选择多个文件,则第一个条目将是文件夹名称。

字符串副本会为你做这个伎俩吗?

 LPSTR ptrFileName;
 char buf [100];
 strcpy(buf,ptrFileName);
 / *现在迭代* /
 for(int nLoopCnt = 0; nLoopCnt <(sizeof(buf)/ sizeof(buf [0])); nLoopCnt ++){
    char ch = buf [nLoopCnt];
    / *用ch * /做任何事情
 }

希望这会有所帮助,最好的问候,汤姆。