c语言,将字符串逆置,如"i am a student"逆置为"student a am i"

#include<stdio.h>
#include<assert.h>
/*求字符串长度*/
int my_strlen(char *str)          
{
        assert(str);
	int count=0;
	while(*str)
	{
		count++;
		str++;
	}
	return count;
}
/*逆置函数*/
char *reverse_str(char *start,char *end)
{
	char *ret=start;
	char temp;
	while(start<end)
	{
		temp=*start;
		*start=*end;
		*end=temp;
		start++;
		end--;
	}
	return ret;
}

char *reverse(char *str)
{
        assert(str);
	char *tmp=str;
	char *start=str;
	char *end=str+my_strlen(str)-1;
	reverse_str(start,end);//逆置字符串
	while(*str)
	{
		start=str;
		while((*str!=‘ ‘)&&(*str!=‘\0‘))
		{
			str++;
		}
		end=str-1;
		reverse_str(start,end);//逆置单词
		if(*str==‘ ‘)
			str++;
	}
	return tmp;
}
int main()
{
	char arr[]="i am a student";
	printf("%s\n",reverse(arr));
	return 0;
}
时间: 2024-09-30 20:01:26

c语言,将字符串逆置,如"i am a student"逆置为"student a am i"的相关文章

c语言中字符串的匿置 超级简单

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> void main() { char * src = "hello,world"; printf("%d", src[10]); char *dest = NULL; //开辟内存空间 然后多开辟一个用来存储字符串的结束符 dest= (char *)mal

C语言里字符串的解析

原文网摘:http://www.cnblogs.com/yi-meng/p/3620244.html#undefined 根据给定的字符串,按照一定规则解析字符串,卡住好几次,这次做个笔记,以供参考 函数名称:   strtok 函数原型:   char *strtok(char *s1, const char *s2) 函数功能:   分解s1字符串为用特定分隔符分隔的多个字符串(一般用于将英文句分解为单词) 函数返回:   字符串s1中首次出现s2中的字符前的子字符串指针 参数说明:   s

C语言常见字符串操作函数总结

1. bcmp 原型:extern int bcmp(const void *s1, const void *s2, int n); 用法:#include <string.h> 功能:比较字符串s1和s2的前n个字节是否相等 说明:相等返回0,否则返回非0值 2. bcopy 原型:extern void bcopy(const void *src, const void *dest, int n); 用法:#include <string.h> 功能:将字符串src的前n个字节

C语言编程 字符串的旋转(左旋右旋及判断)

此前不太熟悉这种类型的题目,特此做一个合计的方法总结.包括字符串中字符的左旋(右旋),和判断一个字符串是否是由另一个字符串旋转(左旋或者右旋)而来. 一.字符串的左旋(右旋) 由于左旋和右旋思路一致,这里仅介绍左旋方法.这种题目有两种思路:1.首字符的后置以及其余元素的往前推置,循环重复此过程K次(k为左旋字符个数). eg:字符串为"ABCDEF\0",要旋转2个字符,首先保存首字符到一个变量,然后把其余变量全部提前一位置放,即为"BCDEF \0"(此处注意,最

c语言中字符串操作的工具类

 1.编写头文件 #define _CRT_SECURE_NO_WARNINGS //#pragmawarning(disable:4996) #include <stdio.h> #include <stdlib.h> #include <string.h> struct CString { char *p;        //保存字符串首地址 int reallength; //实际长度 }; typedef struct CString mystring;//

C语言中字符串如何转换为二进制、八进制、十进制、十六进制

在C语言某个程序当中需要把文本16进制转换成对应的16进制数,比如字符串"0x1a"转换成10进制的26,可以用以下函数来实现 相关函数: atof, atoi, atol, strtod, strtoul表头文件: #include <stdlib.h>定义函数: long int strtol(const char *nptr, char **endptr, int base):函数的解释说明 这个函数会将参数nptr字符串根据参数base来转换成长整型数.参数base

iOS开发入门 ? C语言(字符串、字符串数组、命令行参数)

字符串 1. 概念 用双引号引起来的就是字符串 "a string" //C语言编译器会将两个并列的字符串自动拼接成一个字符串 "a string""another a string" // \是换行连接的标记(一行不够写) "a looooooooooong \ string" 常见ASCII编码: 'A' == 65    'a' == 97    '0' == 48    '\0' == 0 int a[10]; //表

C语言之字符串处理函数

C语言中字符串处理函数介绍 下面介绍8种基本的常用的字符串处理函数,在数值数组中也常常用到(部分函数).所有的C语言编译系统中一般都提供这些函数. 1.puts函数——输出字符串的函数 一般的形式为puts(字符串组) 作用:将一个字符串输出到终端.如,char一个string,并赋予初值.调用puts(string);进行字符串的输出. 2.gets函数——输入字符串的函数 一般的形式:gets(字符数组) 作用:从终端输入一个字符串到字符数组,并且得到一个函数值成为字符数组的起始地址. ge

D语言中字符串的操作

字符串的操作在软件开发中是特别重要的一个事情,因为基本上的编程都会使用到字符串,字符串操作的好坏决定着一个语言的好与差.在我做过的一个项目中曾经就出现过字符串操作性能问题. D语言字符串有 string,wstring,dstring三种类型,在D语言中字符串是使用字符数组定义的,三种类型分别对应char,wchar,dchar.char只有一个字节,wchar为双字节,dchar为三字节.对字符串的操作也相当于是对数组的操作,这跟其它语言不一样,C++中字符串是以string类来进行封装,它的

C语言学习 —— 字符串的学习(一)

这是本人在学习 C语言有关 字符串内容 时的相关笔记 由于本人技术有限,如有错误,还望指正 C语言中数据类型中只有 字符型(char),而 char型 变量一次只能存储一个字符,在日常工作中经常需要定义 字符串 ,所以使用 字符数组 来存储和调用字符数据. 1.字符数组的定义和使用 char ch[50];//定义一个长度为50的字符串数组 定义字符串时需要定义字符串的长度,但是如果在定义的同时对字符串进行赋值 则不需要定义长度,代码如下 char ch[] = "I love QIAN&quo