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");
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值