我正在使用具有多项选择功能的GetOpenFileName
。挑选的文件在LPSTR中返回。在此LPSTR中,所选文件由NULL字节分隔。我想将LPSTR拆分成一个数组,然后遍历该数组。
在PHP中我会这样做:
$array = explode("\0", $string);
但由于我是C的新手,我不知道自己在做什么。
答案 0 :(得分:3)
你可以这样做来循环遍历字符串:
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);
如果真的有必要,您可以调整此代码来创建数组。
答案 1 :(得分:3)
最简单的做法可能就是直接循环返回的字符串。 (没有必要创建一个单独的数组。)代码看起来像这样(省略错误检查):
GetOpenFileName( &ofn );
LPSTR pszFileName = ofn.lpstrFile;
while( *pszFileName != 0 )
{
// do stuff...
pszFileName += strlen( pszFileName ) + 1;
}
另外,请不要忘记,如果用户选择多个文件,则第一个条目将是文件夹名称。
答案 2 :(得分:1)
字符串副本会为你做这个伎俩吗?
LPSTR ptrFileName; char buf[100]; strcpy(buf, ptrFileName); /* Now iterate */ for (int nLoopCnt = 0; nLoopCnt < (sizeof(buf) / sizeof(buf[0])); nLoopCnt++){ char ch = buf[nLoopCnt]; /* Do whatever with ch */ }
希望这有帮助, 最好的祝福, 汤姆。