69,382
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
char words[50][256],symbols[50],dest[256];
int main()
{
char *str="how@are#you?";
char *src=str,*des=dest;
int i=0,widx=0,widx2=0,sidx=0;
for(;*src!='\0'; isalpha(*src) ? (words[widx][widx2++]=*src++) :(widx++,widx2=0,symbols[sidx++]=*src++));
for(i=0;i<widx;i++) for(src=words[widx-i-1];*src!='\0' || (*des++=symbols[i],0);*des++=*src++);
puts(dest);
return 0;
};
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
char words[50][256];
char symbols[50];
char dest[256];
int main()
{
char *str="how@are#you?";
char *src=str,*des=dest;
int i=0,widx=0,widx2=0,sidx=0;
for(;*src!='\0'; ++src)
if(isalpha(*src))
words[widx][widx2++]=*src;
else
{
widx++;
widx2=0;
symbols[sidx++]=*src;
}
for(i=0;i<widx;i++)
{
for(src=words[widx-i-1];*src!='\0';*des++=*src++);
*des++=symbols[i];
}
*des='\0';
puts(dest);
return 0;
};
void divs(char *p,char *d)
{
int i=0;
char *o;/*必须保存源字符串起始指针,因为第二步要将源字符串拷贝到目标字符串*/
o=p;
char *point[100];/*获取每个单词在字符串中的位置,为下面将单词倒叙拷贝*/
while(*p!='\0')
{
while((*p!='\0')&&!isalpha(*p++));/*跳过非字母*/
if(isalpha(*p))/*如果是字母而不是结束符,就将单词起始字母在字符串中的位置保存下来*/
{
point[i++]=p-1;
}
while((*p!='\0')&&isalpha(*p++));/*跳过单词*/
}
i=i-1;/*回到最后一个单词的起始字母位置*/
while((i>=0)||(*o!='\0'))
{
while((*o!='\0')&&!isalpha(*o))/*如果非字母,拷贝到目标字符串*/
{
*d++=*o++;
}
if(isalpha(*o))/*如果下一个是字母而不是结束标志*/
{
while(isalpha(*point[i]))/*将单个单词以倒叙方式拷贝到目标字符串*/
{
*d++=*point[i]++;
}
}
while((*o!='\0')&&isalpha(*o))/*跳过单词*/
{
*o++;
}
i--;
}
*d='\0';/*添加结束标志*/
}
罪过了 抱歉楼主
void divs(char *p,char *d)#include "stdio.h"
#include "ctype.h"
#include "string.h"
#define MAX 100
int main()
{
char str[] = "how@are#you?My=name%is&thy38";
char result[MAX]="\0";
char* pp[MAX];
char splits[MAX][2];
int token=0, split=0, i=0;
//分隔符都换成空格
for(i=0; i<strlen(str); ++i) {
if(isalnum(str[i])) continue;
splits[split][0] = str[i];
splits[split++][1] = '\0';
str[i] = ' ';
}
//Split
char * pch = strtok(str, " ");
while (pch) {
pp[token++] = pch;
pch = strtok (0, " ");
}
//重组
i=0;
while(token) {
strcat(result, pp[--token]);
if(i < split) strcat(result, splits[i++]);
}
puts(result);
}