如何获得最后一个斯特托克

How to get the last strtok?

本文关键字:何获得 最后一个      更新时间:2023-10-16

我想拆分一个"字符串"(分隔符)以获得最后一次出现。这是我写的代码:

char str[] ="D:\Google Drive\My Files\Test.zip";
char * buffer = str;
sprintf(buffer, "%s", strtok(str,"\"));
cout << buffer;

但它返回D:而不是Test.zip(第一次出现,而不是最后一次出现)。你会如何完成这项任务?

我需要使用/保持 sprintf(即格式字符串应用程序)。

改用strrchr - 它在这种情况下更合适,并且既非破坏性又可重入:

char str[] ="D:\Google Drive\My Files\Test.zip";
char * buffer = strrchr(str, '');
cout << buffer + 1;

如果您确实必须根据您的问题保留sprintf的冗余和低效使用,那么您当然可以这样做:

char str[] ="D:\Google Drive\My Files\Test.zip";
char buffer[256];
sprintf(buffer, "%s", strrchr(str, '') + 1);
cout << buffer;

现场演示