1.C语言库函数strtok()介绍
查看MSDN帮助手册,strtok函数的定义如下:
char *strtok(
char *strToken,//包含标记(分隔符)的字符串
const char *strDelimit //指定的分隔符(字符串)
);
返回值:
返回指向在 strToken中的下一个标记。 当未找到时,它们返回 NULL。 每次调用都通过将strToken字符串中下一个标记替换为NULL,返回指向的下一个分割字符串。
示例代码:
#define _CRT_SECURE_NO_WARNINGS//strtok()为非安全版本,在VS中需要此定义
#include <string.h>
#include <stdio.h>
char string[] = "A string\tof ,,tokens\nand some more tokens";
char seps[] = " ,\t\n";
char *token;
int main( void )
{
printf( "Tokens:\n" );
// Establish string and get the first token:
token = strtok( string, seps ); // C4996
// Note: strtok is deprecated; consider using strtok_s instead
while( token != NULL )
{
// While there are tokens in "string"
printf( " %s\n", token );
// Get next token:
token = strtok( NULL, seps ); // C4996
}
}
结果:
Tokens:
A
string
of
tokens
and
some
more
tokens
2.使用strtok()函数一次性读入所有输入整数,并存入int型数组中
正常情况下,我们无法对一个int整数数组一次性输入所有数值。为了解决这个问题,我们可以先输入包含多个空格的连续整数, 通过gets()函数一次性接受下来,再将输入的字符串循环调用strtok()函数进行拆分,把拆分的子字符串转换为整数,并存到整数数组中。
代码:
#define _CRT_SECURE_NO_WARNINGS
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int a[10];
char strToken[100];
printf("请输入1-10个整数[以空格隔开]: ");
gets_s(strToken, sizeof(strToken));
char *token = strtok(strToken, " ");
int i = 0;
while (token!=NULL) //while(token)
{
a[i++] = atoi(token);
token = strtok(NULL, " ");
}
int j = 0;
while (j < i)
printf("%d ", a[j++]);
return 0;
}