C语言使用strtok函数对字符数组进行切分

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;
}
发布了21 篇原创文章 · 获赞 20 · 访问量 2987

猜你喜欢

转载自blog.csdn.net/weixin_42844163/article/details/104067698
今日推荐