- 编写一个C函数,将”I am from shanghai ”倒置为”shanghai from am I”,即将句子中的单词位置倒置,而不改变单词内部结构.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
int i = 0;
int j = 0;
int len = 0;
char *temp;
char *str[] = { "I", "am","from","shanghai" ,NULL};定义为 字符串数组
while (str[i] != NULL)
{
i++;
len++;
}
for(i = 0, j = len - 1; j > i; i++,j--)// i从前向后遍历 J从后向前遍历
{
temp =*(str+i);
*(str+i) = *(str+j);
*(str+j) = temp;///将I J 对应字符串 交换
}
for(i = 0; i < len; i++)
{
printf("%s ", *(str+i));
}
printf("\n");
return 0;
}
- 输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来.
#include <stdio.h> #include <string.h> int main() { char s[100]; char str1[100]; char str2[100]; printf("Please enter your string:\n"); gets(s); printf("Please enter the frame head:\n"); gets(str1); printf("Please input pin the tail:\n"); gets(str2); char *p = s; char *p1 = str1; char *p2 = str2; char *p3 = NULL; char *p4 = NULL; printf("Legal frame in the string:\n"); while(*p) { if(strncmp(p,p1,strlen(str1))==0) { p3=p; while(*p3) { if(strncmp(p3,p2,strlen(str2))==0) { int j=p3-p+strlen(str2),i; p4 = p; for(i=0;i<j;i++) { printf("%c",*p4++); } puts("\0"); } *p3++; } } *p++; } return 0; }