- /*******************************************************************************************
- ** 函数名称: PrintLongestWordFromString()
- ** 作 者: 张月华
- ** 版 本: 1.0.0
- ** 日 期: 2011-6-14
- ** 功能描述: 输入一个字符串,输出其中单词长度最长的单词,各个单词以空格间隔
- ** 被本函数调用的函数清单: 1.strlen()
- ** 调用本函数的函数清单: 1. main()
- ** 被访问的表: 无
- ** 被修改的表 : 无
- ** 输 入: char *string_in ,输入字符串
- ** 输 出: 无
- ** 返 回 值: 长度最长的单词的首地址
- ** 其 他:
- 输入:" I am a boy! And you are a girl~ Chinese!"
- 输出:Chinese!
- ** 修改历史:
- 1. 修改时间:
- 修 改 者:
- 版 本:
- 修改简述:
- 2. ......
- *********************************************************************************************/
- char *PrintLongestWordFromString(char *string_in)
- {
- char *pointer_to_word[256]; /* 用来存放单词的首地址 */
- unsigned int strlen_each_word[100]; /* 存放每个单词的长度 */
- unsigned int liv_i; /* 挨个查找每一个字符,循环变量 */
- unsigned int liv_j; /* 指示指针数组的下标,循环变量 */
- int is_word; /* 是否是单词 ,单词开始 = 1,不是单词 = 0*/
- unsigned int words_total = 0; /* 单词总个数 */
- unsigned int longest_word_length; /* 最长的单词的长度 */
- int longest_subscript = 0; /* 用来存放最长单词的下标 */
- for (liv_i = 0,liv_j = 0; string_in[liv_i] != '/0'; liv_i++)
- {
- if(string_in[liv_i] == ' ')
- {
- is_word = 0;
- string_in[liv_i] = '/0'; /* 将空格都变成'/0',这样用strlen()求得每一个单词长度(不包含/0),用%s输出的就是单个单词 */
- }
- else
- if (is_word == 0)
- {
- pointer_to_word[liv_j] = &string_in[liv_i]; /* 获得当前单词的首地址,此时用%s输出的就是单个单词*/
- liv_j++; /* 单词之间以空格隔开 */
- is_word = 1;
- }
- }
- words_total = liv_j; /* 记录单词总个数 */
- for (liv_j = 0; liv_j < words_total; liv_j++)
- {
- strlen_each_word[liv_j] = strlen(pointer_to_word[liv_j]); /* 获得每个单词的长度值 */
- }
- longest_word_length = strlen_each_word[0]; /* 假定第0个元素,即第一个单词长度就是最大的 */
- for (liv_i = 0; liv_i < words_total; liv_i++) /* 求长度最大的单词的下标值 */
- {
- if (strlen_each_word[liv_i] > longest_word_length)
- {
- longest_word_length = strlen_each_word[liv_i]; /* 得到最长的值 */
- longest_subscript = liv_i; /* 得到其对应的下标,就是指针数组中对应的下标位置 */
- }
- }
- return pointer_to_word[longest_subscript]; /* 得到长度最大的单词的首地址 */
- }
输入一个字符串,输出长度最长的单词
最新推荐文章于 2024-04-26 21:01:08 发布