丸子酱ovo 发表于 2021-2-1 02:34:39

字符串

【问题描述】输入两个字符串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;
}

人中仙 发表于 2021-2-1 19:32:42

用了一个函数封装了分隔符的判断,代码如下:#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;
}

2736946915 发表于 2021-2-1 20:52:01

推荐使用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]
查看完整版本: 字符串