| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 454 人关注过本帖
标题:怎么把str字符串里面的运算符分离出来
只看楼主 加入收藏
狸之城堡
Rank: 1
等 级:新手上路
帖 子:15
专家分:8
注 册:2014-2-28
结帖率:75%
收藏
已结贴  问题点数:10 回复次数:7 
怎么把str字符串里面的运算符分离出来
想把str字符串里面的运算符分离出来,例如:8.54+6.84-(9.234+2.4)*6.95   然后是得到+,-,(,+,),*
 遍历str
我要怎么才可以让调用sep函数时每一个i都有返回值,,调试时k总是等于0,就是无法为1
int sep(char str[]){
   int len;
   len=strlen(str);
    for(int i=0;i<len;i++)
        if(str[i]=='+'||str[i]=='-'||str[i]=='*'||str[i]=='/'||str[i]=='%'||str[i]=='^'||str[i]=='('||str[i]==')') return 1;
        return 0;
      }
       for(int j=0;j<len;j++){
        k=sep(str);
      if(k==1) {
          ch[t]=str[j];
          t++;
      printf("%c\n",ch[t]);
  }
搜索更多相关主题的帖子: return 字符串 
2014-03-30 18:23
狸之城堡
Rank: 1
等 级:新手上路
帖 子:15
专家分:8
注 册:2014-2-28
收藏
得分:0 
int sep(char str[]){
       int i,len;
       len=strlen(str);
       if(i>=0 &&i<len){
        if(str[i]=='+'||str[i]=='-'||str[i]=='*'||str[i]=='/'||str[i]=='%'||str[i]=='^'||str[i]=='('||str[i]==')') return 1;
        else
        return 0;
      }
}
错了,子函数不用for循环
2014-03-30 18:46
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:2 
上边两个都错了。
#include<stdio.h>
void sep(char s1[],char s2[])
{
  int i,j;
  for(i=j=0;s1[i];i++)
    if(s1[i]=='+'||s1[i]=='-'||s1[i]=='*'||s1[i]=='/'||s1[i]=='%'||s1[i]=='^'||s1[i]=='('||s1[i]==')')s2[j++]=s1[i];
 s2[j]='\0';
}

int main()
{
    char s1[100]="8.54+6.84-(9.234+2.4)*6.95",s2[100];
    //printf("输入一个表达式,例如:  8.54+6.84-(9.234+2.4)*6.95 \n");  
    //gets(s1);
    sep(s1,s2);
    puts(s1);
    puts(s2);        
    return 0;
}
2014-03-30 19:54
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:3 
这样简单点  
程序代码:
#include <stdio.h>

int main()
{
    char * t="8.54+6.84-(9.234+2.4)*6.95";
    int i=0;
    while(*t!='\0')
    {
        while((*t>='0' && *t<='9') || *t=='.') t++;
        i++;
        if(*t!='\0') printf("$%d: %c\n",i,*t);
        t++;
    }
    return 0;
}
如果把数字再剥离出来  要复杂一些

DO IT YOURSELF !
2014-03-30 20:54
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
试试这个效果呢
程序代码:
#include <stdio.h>

int isnum(char t)
{
    if((t>='0' && t<='9') || t=='.') return 1 ;else return 0;
}
int main()
{
    char * t="8.54+6.84-(9.234+2.4)*6.95";
    int i=1;
    printf("$%02d: ",i);
    while(*t!='\0')
    {
        printf("%c",*t);
        if(!(isnum(*t) && isnum(*(t+1))) && *(t+1)!='\0')
        {
            printf("\n");
            printf("$%02d: ",++i);
        }
        t++;
    }
    printf("\n");
    return 0;
}



DO IT YOURSELF !
2014-03-30 21:38
狸之城堡
Rank: 1
等 级:新手上路
帖 子:15
专家分:8
注 册:2014-2-28
收藏
得分:0 
回复 3楼 ying8501
那为什么我上面的写法不行呢
2014-03-31 22:20
ying8501
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:1092
专家分:1446
注 册:2008-11-24
收藏
得分:5 
只能说你的概念太不清楚,分不清作为函数参数时,一个确定字符和一个字符串的表达方式。
//按你的思路改的程序,你对照一下。
#include<stdio.h>
int sep(char c){
      
        if(c=='+'||c=='-'||c=='*'||c=='/'||c=='%'||c=='^'||c=='('||c==')') return 1;
        else
        return 0;
}
int main()
{
    char s1[100]="8.54+6.84-(9.234+2.4)*6.95",s2[100];
    int i,j;

    //printf("输入一个表达式,例如:  8.54+6.84-(9.234+2.4)*6.95 \n");  
    //gets(s1);

    for(i=j=0;s1[i];i++)
        if(sep(s1[i])==1)s2[j++]=s1[i];
    s2[j]='\0';

    puts(s1);
    puts(s2);        
    return 0;
}

[ 本帖最后由 ying8501 于 2014-4-1 09:01 编辑 ]
2014-04-01 08:55
狸之城堡
Rank: 1
等 级:新手上路
帖 子:15
专家分:8
注 册:2014-2-28
收藏
得分:0 
明白,谢谢指教
2014-04-04 15:56
快速回复:怎么把str字符串里面的运算符分离出来
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016079 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved