1. 程式人生 > >C語言字串單詞倒序

C語言字串單詞倒序

題目要求:輸入若干個單詞,每個單詞之間用空格分割,要求將每個單詞中的字母倒序輸出。

示例輸入:abc def ghijkl

示例輸出:cba fed lkjihg

C語言程式如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*函式:inverse
	作用:將buff+star至buff+end之間的資料倒序儲存
	引數1:指標首地址
	引數2:要進行倒序的開始位置與首地址間的距離
	引數3:要進行倒序的結束位置與首地址間的距離*/
void inverse(char *buff, int star, int end)		
{
	char *temporary;				//新建char型指標
	int i;							
	temporary = (char*)malloc(sizeof(char)* (end - star));		//申請一塊大小為需要進行倒序的資料段的記憶體
	memset(temporary, 0, end - star);							//將申請下來的記憶體清零
	for (i = 0; i < (end - star); i++)				//將源資料倒序放置在新申請的記憶體下
		temporary[i] = buff[end - i-1];
	memcpy(buff + star, temporary, end - star);		//將倒序後的資料替換到源資料記憶體下
	free(temporary);		//釋放申請記憶體
}
void main()
{
	char buff[1000];
	char ch;
	int word_long = 0, word_flag = 0;
	int i=0;
	gets(buff);
	do
	{
		if (buff[i++] == ' ')
		{
			inverse(buff, word_flag, word_flag+word_long);
			word_flag += word_long+1;
			word_long = 0;
		}
		else
			word_long++;
	} while (buff[i] != '\0');
	inverse(buff, word_flag, word_flag + word_long);
	puts(buff);
	getchar();
}