我在拆分C语言中的字符串的第一个单词时遇到麻烦。
我已经尝试过strtok()
并在此处阅读了一些相关问题,但没有达到我的预期。
例如输入:
USA;Soccer;Baseball;NBA
我想要作为输出:
Soccer;Baseball;NBA
答案 0 :(得分:3)
您可以尝试一下
strstr manual
#include <stdio.h>
#include <string.h>
int main()
{
char *a = "USA;Soccer;Baseball;NBA";
//char *strstr(const char *haystack, const char *needle);
char *b = strstr(a, ";");
if((b != NULL))
printf("%s\n",b+1);
return 0;
}
或者这个:
#include <stdio.h>
#include <string.h>
int main()
{
char *a = "USA;Soccer;Baseball;NBA";
//char *strchr(const char *s, int c);
char *b = strchr(a, ';');
if((b != NULL))
printf("%s\n",b+1);
return 0;
}
答案 1 :(得分:0)
稍微相关:strtok()
会将字符串分成一系列标记,如果需要获取原始字符串的所有部分,可以使用这些标记,如下所示:
#include <stdio.h>
#include <string.h>
void main() {
char line[] = "USA;Soccer;Baseball;NBA";
char * cur;
for (cur = strtok(line, ";"); cur != NULL; cur = strtok(NULL, ";")) {
printf("- %s\n", cur);
}
}
请注意:
strtok
拥有一些内部状态,因此您不能将两个这样的循环相互嵌套(strtok_r
可以避免此问题)strtok
更改了原始字符串,因此如果以后需要它,则需要进行复制答案 2 :(得分:0)
如果您不允许在字符串中使用某些字符,则仍然可以使用strtok
:
#include <stdio.h>
#include <string.h>
int main()
{
char input[] = "USA;Soccer;Baseball;NBA";
char *skip = strtok(input, ";");
char *output = strtok(NULL, "?"); // Or any other character not allowed in the string.
if(output != NULL)
printf("%s\n",output);
return 0;
}