标题:字符串处理
只看楼主
zhao8882407
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-1-10
 问题点数:0 回复次数:11 
字符串处理
给出一字符串
char *string = "Front%20matter%20front.htm" ;
写一函数将其中的字串“%20”用空格符号代替;
搜索更多相关主题的帖子: 字符 字串 Front string char 
2008-01-31 10:17
zhao8882407
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-1-10
得分:0 
自己写了一个,那位再写个,交流下了
int GetNewString(char *new, const char *temp)
{
    int i=0;
    int j=0;

    while(*(temp + i) != 0)
    {
        if(*(temp + i) != '%')
        {
            *(new + j) = *(temp + i);
        }else{
                *(new + j) = ' ';
                i +=2;    
            }
        i++;
        j++;
    }
    *(new +j) = 0;
    printf("new character = %s\n", new);
    return 1;

}
2008-01-31 12:31
闪闪4521
Rank: 1
等 级:新手上路
帖 子:196
专家分:0
注 册:2007-11-30
得分:0 
你这个测试过了没?
我怎么觉得不太对呀,
两个指针是指向哪里的?
字符串的结尾是‘\0’不是0
还有那个if语句不知道你是什么意思,给个注释吧,

我也很菜,只能说这么多了
2008-01-31 19:16
zhao8882407
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-1-10
得分:0 
这样写应该比较好看了
//这样写应该比较好看了,程序是经过测试的,0就是结束符

    char * temp = "Front%20matter%20front.htm";;
    char new[256];  //用来存放处理后的字符串
    int i=0;
    int j=0;

    while(*(temp + i) != 0)
    {
        if(*(temp + i) != '%')
        {
            *(new + j) = *(temp + i);
        }else{
                *(new + j) = ' ';
                i +=2;   
            }
        i++;
        j++;
    }
    *(new +j) = 0;
    printf("new character = %s\n", new);
    return 1;
2008-02-01 09:36
jackys2006
Rank: 1
等 级:新手上路
帖 子:195
专家分:0
注 册:2006-3-10
得分:0 
#include <stdio.h>
#include <string.h>
#include <malloc.h>
int main(void)
{
    char * temp = "Front%20matter%20front.htm";
    char *new=(char *)malloc(strlen(temp));  //用来存放处理后的字符串
    int i=0;
    int j=0;
    char *s0=temp;
    int li=0;
    int lj=0;

    while((unsigned)i<=strlen(temp))
    {
        if(*(temp + i) == '%')
        {
            memcpy(new+lj,temp+li,i-li);
            *(new+j)=' ';
            j++;
            lj=j;
            i+=3;
            li=i;
            continue;
        }
        if(*(temp + i) == '\0')
        {
            memcpy(new+lj,temp+li,i-li);
            *(new+j)='\0';    
            break;
        }
        i++;
        j++;      
    }
    printf("new character = %s\n", new);
   
    return 0;
}
是不是很拖沓,
不过我也就这水平了,
不知道改成这样效率会不会高点?

2008-02-01 11:14
s0h0j0
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-1-26
得分:0 
我的想法
char *string = "Front%20matter%20front.htm" ;
写一函数将其中的字串“%20”用空格符号代替;

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
char* replace(char* str )
{
   for(;*str!='\0';str++)
     {
       if(*str='%'&&*(str+1)='2'&&*(str+2)='0')
        {*(str++)=' ';*(str++)=' ';*str=' ';}
       else continue;
     }
     return *str;
}
2008-02-01 13:28
s0h0j0
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-1-26
得分:0 
不好意思我刚发布的程序有些小问题,又改了一下,欢迎提出意见:
char* replace(char* s)
{
      char* str=s;
   for(;*str!='\0';str++)
     {
       if(*str=='%'&&*(str+1)=='2'&&*(str+2)=='0')
        {*(str++)=' ';*(str++)=' ';*str=' ';}
       else continue;
     }
     return str;
}
2008-02-01 13:56
菜鸭
Rank: 1
等 级:新手上路
帖 子:262
专家分:0
注 册:2007-12-9
得分:0 
关于我的主题被锁之事,已到意见区投诉,请众位去看下帖子,发表下意见-----欢迎意见相同的,也欢迎意见不同的。

谈笑声中话天地,清茶浊酒品江湖。
昔日豪杰今安在?中华代有人才出!
2008-02-01 14:38
自负的蜘蛛
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-1-22
得分:0 
#include<stdio.h>
void main()
{  char a[]="Front%20matter%20front.htm";
   int i=0;
   
   while(a[i]!='\0')
   { if (a[i]=='%')
        a[i]=' ';
     if (a[i]=='2')
        a[i]=' ';
     if (a[i]=='0')
        a[i]=' ';
     i++;
   }
   i=0;
   while(a[i]!='\0')
   {printf("%c",a[i]);i++;
   }
   printf("\n");
}
已经运行过了 ,
明天再发用指针的 代码
现在要陪女朋友发短信去
2008-02-01 22:31
sxn0508
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2008-1-24
得分:0 
[bo]以下是引用 [un]zhao8882407[/un] 在 2008-2-1 09:36 的发言:[/bo]

//这样写应该比较好看了,程序是经过测试的,0就是结束符

    char * temp = "Front%20matter%20front.htm";;
    char new[256];  //用来存放处理后的字符串
    int i=0;
    int j=0;

    while(*(temp + i) != 0)
 ...

楼主写的这个不太好用啊,要是碰到%30,一样被你替换成了空格,岂不不美!
2008-02-03 03:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-199168-1-1.html




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

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