将具有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 * /做任何事情 }
希望这会有所帮助,最好的问候,汤姆。