zoukankan      html  css  js  c++  java
  • 再论句子中单词的逆序输出

    今天,有个朋友看了我的一篇关于将句子中单词次序翻转并输出的文章,说这个程序只做到了输出,没有存储,实用不大。链接在下面!

    http://blog.csdn.net/persistvonyao/article/details/16909199

    对此,我思考良久,决心重写这个程序!

    下面是我重写的程序:

    #include <stdio.h>
    #include <stdlib.h>
    
    #define N 128
    
    /*
     * @author: 冯克
     * @date:	2014.1.3
     * @brief:	将输入的以空格隔开的字符串以单词为最小单位,逆序排列!
     * @param:	word_str	输入的字符串
     * @return:	success 	返回排序好的字符串
     * 			fail		NULL
     * */
    
    char *convertwordsort(char *word_str)
    {
    	char *buf;
    	int i = 0;
    	int j = 0;
    	int max = 0;
    	int tmp = 0;
    	int max2 = 0;
    	int min2 = 0;
    
    	/* 申请空间 */
    	buf = (char *)malloc(sizeof(char) * N);
    
    	/* 判断输入的字符串是否为空指针 */
    	if(word_str == NULL)
    	{
    		perror("it's NULL string! error");
    		return NULL;
    	}
    
    	/* 将字符串放入数组buf中,方便进行排序 */
    	while(*word_str != '')	
    	{
    		buf[i++] = *word_str; 
    		word_str++;
    	}
    
    	/* 存储字符的数目 */
    	max = i - 1;
    
    	/* 将buf中的字符串逆序 */
    	for(i = 0; i < max / 2 + 1; i++)
    	{
    		tmp = buf[i];
    		buf[i] = buf[max - i];
    		buf[max - i] = tmp;
    	}
    
    	//printf("%s
    ", buf);
    	/* 将逆序的字符串中的单词分别在逆序 */
    	for(i = 0; i < max + 2; i++)
    	{
    		if(buf[i] == '')
    		{
    			/* 对最后一个单词进行排序 */
    			max2 = i - 1;
    			for(j = min2; j - min2 < (max2 - min2) / 2 + 1; j++)
    			{
    				tmp = buf[j];
    				buf[j] = buf[max2 - j + min2];
    				buf[max2 - j + min2] = tmp; 
    			}
    
    			break;
    		}
    		else if(buf[i] == 32)/* 对前面以空格结尾的各个单词进行排序 */
    		{
    			max2 = i - 1;
    			for(j = min2; j - min2 < (max2 - min2) / 2 + 1; j++)
    			{
    				tmp = buf[j];
    				buf[j] = buf[max2 - j + min2];
    				buf[max2 - j + min2] = tmp; 
    			}
    			min2 = i + 1;
    		}
    	}
    
    	return buf;/* 返回逆序的单词 */	
    }
    
    /* 测试程序 */
    int main(int argc, const char *argv[])
    {
    	char *str = "this is a test, thank you for your reading!";
    	char *result;
    
    	result = convertwordsort(str);
    	printf("%s
    ", result);
    
    	return 0;
    }
    

    由于本人水平有限,如有疑问,请联系我!qq:278932578  冯克

  • 相关阅读:
    Python中获取异常(Exception)信息
    Python 3.5 连接Mysql数据库(pymysql 方式)
    用命令查看Mysql中数据库、表的空间大小
    MySQLdb操作mysql的blob值
    mysql.connector操作mysql的blob值
    windows获取硬盘使用率等信息
    python操作系统环境变量
    git clone
    在Spring项目中使用Log4j记录日志
    org.apache.log4j.Logger详解
  • 原文地址:https://www.cnblogs.com/vonyao/p/3614311.html
Copyright © 2011-2022 走看看