20150503字符串实战

Posted wzg31796

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20150503字符串实战相关的知识,希望对你有一定的参考价值。

五.字符串切割

1.strtok用法

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main1() 


	char str[100] = "123,re,456,ertr,treter";



	char *p = strtok(str, ",");//传递字符串切割
	//,替换为\\0
	printf("%s", p);


	for (char *p = strtok(str, ","); p != NULL; p = strtok(p + strlen(p)+1,",")) 
		printf("%s\\n", p);


	

	system("pause");

2.字符串切割
#define    _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//strtok,

int getcharnum(char *str, char ch)

	int i = 0;
	//找到第一个                                //从下一个位置再找
	for (int *p = strchr(str, ch); p != NULL; p = strchr(p+1, ch))
	
		i++;
	

	return i;




void delspace(char *str,char ch)

	int i = 0;
	int j = 0;
	while (str[i]!='\\0')
	
		str[i] = str[j];
		if (str[i]!= ch)
		
			i++;
		

		j++;
	





void main1()

	//一条代码,多条显示
	char str[2048] = "我们还是当朋友好了 ( 其实你还有可以利用的价值)\\
		我想我真的不适合你  (  我根本就不喜欢你!)\\
		其实你人真的很好 (  可是我不想和你在一起)\\
		你人真的很好 ( 我是真的不想和你在一起)\\
		你人真的真的很好....真的 ( 猪头, 离我远一点!)\\
		我暂时不想交男朋友 ( 闪边啦!你还不到我心中帅哥标准的一半)\\
		我不想伤害我们之间的友谊 ( 我们之间也只会有友谊)\\
		我心中牵挂着一个人 ( 那个人是我专门为你这种人虚构的)\\
		我从来没想过这个问题 ( 这是根本不可能的.还用想吗 ? )\\
		我不适合当个情人 ( 废话, 没人会适合当你的情人的)\\
		你给我一段时间考虑 ( 不给我时间, 我怎么溜啊)\\
		你的条件真的很好 ( 可是还没好到我想要的地步)\\
		可是这样的感觉好怪 ( 你这丑八怪, 怪到这样还想吃天鹅肉 ? )\\
		你的温柔我会铭记在心的 ( 拜托, 情圣!光温柔是没用的, 还要有钱!)\\
		其实我一直没勇气接受你( 看到你差点吓死, 哪还有勇气 ? )\\
		你真的很可爱 ( 你真的很幼稚)\\
		你真的是超级可爱啦 ( 猪头, 不要象小孩那样缠着我!)\\
		遇到你, 总会让我重温童年的快乐 ( 就象阿姨遇到小弟弟那样)\\
		我们应该给彼此一点缓冲时间 ( 给你时间快滚, 再不走我要翻脸啦!)\\
		别人都说你条件不错啊 ( 可我从来没这样认为!)\\
		如果我们早点认识就好了 ( 可以让你早点觉悟!)\\
		别急嘛, 我们可以做朋友 ( 趁这个时候我要找到我的白马王子啊~)\\
		";


	int num = getcharnum(str,')');
	printf("一共%d行\\n", num);

	char  ** strall = malloc(sizeof(char *)*num);//分配指针数组
	char  ** strsay = malloc(sizeof(char*)*num);//二级指针
	char  ** strthink = malloc(sizeof(char*)*num);//二级指针




	int i = 0;
	for (char *p = strtok(str, ")"); p != NULL; p = strtok(p + strlen(p) + 1, ")"))
	
		//delspace(p, '\\t');//删除制表,
		if (i<num)
		

			strall[i] = malloc(sizeof(char)*(strlen(p) + 1));//分配内存
			strcpy(strall[i], p);//拷贝
			
			delspace(strall[i], '\\t');//删除制表
			printf("\\n%s", strall[i]);//拷贝的字符串
		
		i++;

	
	
	for (int i = 0; i < num;i++)
	
	
			char *ps = strall[i]; //拷贝的字符串

			ps = strtok(ps, "(");
			strsay[i] = malloc(sizeof(char)*(strlen(ps) + 1));//长度
			strcpy(strsay[i], ps);

			ps = ps + strlen(ps) + 1;//下一段
			strthink[i] = malloc(sizeof(char)*(strlen(ps) + 1));
			strcpy(strthink[i], ps);

			printf("\\n说的   %s,\\n想得   %s", strsay[i], strthink[i]);
			//ps = strtok(ps + strlen(ps) + 1, "(");

		
	

	char mystr[128] =  0 ;
	scanf("%s", mystr);

	int flag = 0;
	for (int i = 0; i < num;i++)
	
		char *p = strstr(strsay[i], mystr);
		if (p!=NULL)
		
			flag = 1;
			printf("\\n说的   %s,\\n想得   %s", strsay[i], strthink[i]);
			break;
		 
	

	
	if (!flag)
	
		printf("可以问芳姐");
	






	system("pause");

以上是关于20150503字符串实战的主要内容,如果未能解决你的问题,请参考以下文章

UVA_10653 公主与王子 #刘汝佳DP题刷完计划

小王子中 小王子 去过几个星球

Android实战——LeakCanary检测内存泄漏

实战技巧,Vue 原来还可以这样写

劝退指南,有了这几个迹象,建议早点转行

小王子-云图