1. 程式人生 > >C程式設計——將“We are from ShangHai”,以“ShangHai from are We”倒序輸出

C程式設計——將“We are from ShangHai”,以“ShangHai from are We”倒序輸出

**1、**程式

#include <stdio.h>
#include <string.h>

int strLen(char *);
void reverse(char *);

int main()
{
	int count = 0;
	char str[99];
	
	printf ("請輸入你想逆序的字串:");

	fgets (str, 99, stdin);
	str[strlen(str)-1] = '\0';
/*
	從從終端輸入一個字串到字元陣列,
	並且得到一個函式值。
	該函式值是字元陣列的起始地址。
	第一個引數:字元陣列
	第二個引數:要讀的資料長度
	第三個引數:檔案指標,用stdin代表標準輸入

	因為使用fgets()函式在輸出時,會將字串結束標誌'\0'轉換成'\n'
	故需要將末端的置為'\0'
	便於後面的判斷
*/
	reverse(str);//將整個句子逆序
	
	char *p1 = str;
	char *p2 = str;
	while (*p2)//將單詞逆序
	{
		if (' ' == *p2)//定位到第一個單詞後的空格
		{
			*p2 = '\0';
			reverse(p1);//將第一個單詞逆序
			*p2 = ' ';
			p1 = p2 + 1;//將p1定位到第二個單詞起始處
		}
		p2++;
	}
	
	reverse(p1);// 3、將最後一個單詞逆序
	printf ("%s\n", str);
	return 0;
}

int strLen(char *pStr)
{
	if (pStr == NULL)
		return -1;
	
	int len = 0;
	
	while(*(pStr++))
	{
		len++;
	}
	
	return len;
}

void reverse(char *pStr)
{
	int left  = 0;
	int right = strLen(pStr)-1;
	
	while (left<right)
	{
		char tmp      = pStr[left];
		pStr[left++]  = pStr[right];
		pStr[right--] = tmp;
	}
}

**2、**測試結果
請輸入你想逆序的字串:We are from ShangHai
逆序結果為:ShangHai from are We