次のコードは、文字列を分割する方法を示しています。トークンを印刷する以外に何もしないため、あまり役に立ちませんが、どのように機能するかを確認し、必要なことを行うバージョンを実装することができます。
char string[] = "Michel Telo - Ai Se Eu Te Pego";
char *separator = strstr(string, " - ");
if (separator != NULL)
{
separator[0] = '\0';
printf("%s\n", string);
separator[0] = ' ';
printf("%s\n", separator + 3);
}
もちろん、または同様の関数を使用して、「 tokensstrdup()
」の内容で新しい文字列を作成できます。
もちろん、これは堅牢ではありません。名前にアーティストが含まれていないことを保証できるものは何も" - "
ないためです。ただし、曲名にアーティストが含まれている場合は、それほど悪くはありません.
これは動作するバージョンです。プラットフォームにない場合はstrdup()
、別の名前で実装されているはずです
#include <string.h>
void extractArtistAndTitle(char *string, char **artist, char **title)
{
char *separator;
if ((string == NULL) || (artist == NULL) || (title == NULL))
return;
separator = strstr(string, " - ");
if (separator != NULL)
{
size_t length;
length = separator - string;
*artist = malloc(1 + length);
if (*artist != NULL)
{
memcpy(*artist, string, length);
(*artist)[length] = '\0';
}
*title = strdup(separator + 3);
}
}
int main()
{
char string[] = "Michel Telo - Ai Se Eu Te Pego";
char *artist;
char *title;
extractArtistAndTitle(string, &artist, &title);
if (artist != NULL)
printf("Artist: %s\n", artist);
if (title != NULL)
printf("Title : %s\n", title);
free(artist);
free(title);
return 0;
}