C語言字串單詞倒序
阿新 • • 發佈:2019-02-18
題目要求:輸入若干個單詞,每個單詞之間用空格分割,要求將每個單詞中的字母倒序輸出。
示例輸入: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(); }