字符串
【问题描述】输入两个字符串str和tok。其中tok由若干字符构成,每个字符均可作为一个分隔字符对str进行分隔。注意:str和tok中均可以包含空格。如果tok含有空格,则空格也作为str的分隔字符。
【输入形式】控制台分两行输入两个字符串str和tok。
【输出形式】分行输出str被分隔后的各字符串。
【样例输入】
jfi,dpf.,jfpe&df-jfpf/□□jfoef$djfo□,pe
,. □/&$-
(上例中“□”代表一个空格)
【样例输出】
jfi
dpf
jfpe
df
jfpf
jfoef
djfo
pe
代码不对头痛 这一种不对
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char str,str2;
gets(str); //输入测试数组
gets(str2);//输入间隔符
int i,j;
int flag=-1;
for(i=0;i<strlen(str);i++) //用双重循环遍历 间隔符数组如果在测试数组中没有找到,
//输出测试数组对应的字母如果找到输出空格
{
for(j=0;j<strlen(str2);j++)
{
if(str!=str2)
flag=1;
if(str==str2)
flag=0;
}
if(flag==1)
printf("%c",str);
if(flag==0)
printf("\n");
}
return 0;
}
这一种也不对
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char *p=NULL,*t=NULL,s,d;
gets(s);
gets(d);
int i;
for(i=0;i<strlen(s);i++)
{
p=strstr(s,d);
t=p+strlen(d);
*p='/0';
printf("%s\n",s);
}
return 0;
}
用了一个函数封装了分隔符的判断,代码如下:#include <stdio.h>
char str1,str2;//字符串缓冲区
int IsPartition(char c);//判断分隔符函数
int main(){
int j = 0;
gets(str1);
gets(str2);
while (str1){//循环判断,是否到字符串尾'\0'
if(IsPartition(str1)){ //判断第j个字符是不是分割字符
putchar('\n');
} else{
putchar(str1);
}
j++;//后移一个字符
}
return 0;
}
//判断是否为分割字符,是分割字符返回1,非分割字符返回0
int IsPartition(char c){
int i = 0;
while(str2){
if(c==str2) return 1;
}
return 0;
} 推荐使用string来声明字符串,因为string有搜索的功能,fing搜索,substr截取
不然你还得遍历,用法差不多和这个一样
#include <iostream>
#include <string>
int main()
{
std::string str{ "id=user;pass=632105;role=aaaa" };
std::string a{};
printf("请输入需要查询的项目(id,pass,role):\n");
std::cin>> a;
if (a == "id") { std::cout << str.substr(str.find("id") + 3, str.find(";") - (str.find("id") + 3)); }
else { std::cout << "111111111111"; }
if (a == "pass") { std::cout << str.substr(str.find("pass") + 5, str.find(";", str.find("pass=")) - (str.find("pass") + 5)); }
if(a=="role"){ std::cout << str.substr(str.find("role") + 5, str.find(";", str.find("role") + 5) - (str.find("role") + 5)); }
}
页:
[1]