您的位置:首页 > 其它

20150503字符串实战

2016-06-23 11:46 246 查看
五.字符串切割

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");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: