如何取出字符串中指定字符串

smiletcl 2007-10-23 12:46:59
如数组a[20]={"@sd@@8976"},如何取出@,并将数组排列为sd8976@@@,也就是把@都放在原数组的最后位置。
...全文
151 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
星羽 2007-10-23
  • 打赏
  • 举报
回复



#include "stdio.h"

void s_sort(char str[])
{
int olen = strlen(str);
int i = 0;
int j = 0;

for (; i < olen; ++i)
{
if (str[i] != '@')
str[j++] = str[i];
}

for (i = j; i < olen; ++i)
str[i] = '@';

}

int main()
{
char a[20] = "@sd@@8976";
printf("%s\n", a);
s_sort(a);
printf("%s\n", a);
return 0;
}

tokyshow 2007-10-23
  • 打赏
  • 举报
回复
一楼的“ for (; i < olen; ++i)"中++i改为i++就可以了,(否则会出现第二个去覆盖第一个)如果你想更进一步拓展为过滤字符串的话,只要在函数中再多增加一个参数,当然判断中也得相应的改了,只要的话相对就比较完美了
Aaron_Jerry 2007-10-23
  • 打赏
  • 举报
回复
看了一楼的程序,佩服。我怎么就没想到呢,还多找了个数组b 汗
xugang_2001 2007-10-23
  • 打赏
  • 举报
回复
2星的程序和3个裤衩的程序就是不一样啊,PFPF
_石头_ 2007-10-23
  • 打赏
  • 举报
回复
1楼好思路!----信服
Aaron_Jerry 2007-10-23
  • 打赏
  • 举报
回复
char b[20];
int i,j,count=0;
j=0;

for(i=0;i < strlen(b);i++)
{
if(a[i]!='@')
b[j++]=a[i];
else
count++; //统计'@'个数
}
//将'@'添加到b的末尾
i=j;
for(;j < i+count;j++)
b[j]='@';
b[j]='\0';
飞哥 2007-10-23
  • 打赏
  • 举报
回复
无话可说了

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧