
C语言关于字符处理类型的题目,求解答,谢谢!!
void StrOR(void)
{int i,righto,j,s,k;
char tem[80];
for(i=0;i<maxline;i++)
for(j=strlen(xx[i])-1;j>=0;j--)
{ k=0;
memset(tem,0,80);//初始化数组tem;
if(xx[i][j]=='o')
{righto=j;
for(s=righto+1;s<strlen(xx[i]);s++)
tem[k++]=xx[i][s];
for(s=0;s<righto;s++)
if(xx[i][s]!='o') 防止第一个就是O的情况下!
tem[k++]=xx[i][s];
strcpy(xx[i],tem);
}
else
continue;
}
我看完后觉得如果一行中如果有多个‘o’那怎么办??? 展开
有多个分开的o的话,那最后一个o后面的字符串放最前,前面的去掉o放后面
看下这个是不是你想要的。。。。。。
void remove_o(char * str)
{
char * tmp = strdup(str);
int i,j=0;
char * lasto = strrchr(str, 'o');
if (lasto == NULL)
return;
*lasto = 0;
lasto++;
strcpy(tmp, lasto);
j = strlen(tmp);
int n = strlen(str);
for (i = 0; i<n; i++)
if (str[i] != 'o')
tmp[j++] = str[i];
tmp[j++] = 0;
strcpy(str, tmp);
free(tmp);
}
void remove_o(char *str)
{
char *tmp = strchar(str, 'o');
if( tmp == null)
return;
int len_all = strlen(str);
int len_last = strlen(tmp) - 1;//o也在内,去掉
int len_head = len_all - len
char *last = malloc(len_last + 1);
char *head = malloc(len_head + 1);
*tmp = 0;//使'o'处为结束符
tmp++;
strcpy(last, tmp);//缓存'o'后面的
*(last + len_last) = 0;
strcpy(head, str);//缓存‘o’前面的
*(head + len_head) = 0;
//下面是交换
*str = 0;
strcpy(str, last);
strcpy(str, head);
free(tmp);
free(last);
free(head);
remove_o(str);//回调,解决多个'o'
}