这个题可谓是让我吃尽苦头。今天呢就讲讲如何写这个题
第一种:将字符串从后往前遍历寻找空格然后再从空格位置往后数至字符串结尾,逐个字符打印。
第二种:先倒序整个字符串再将单词逐个倒序(这是待会儿讲的)
第三种:利用二维数组存储数据的方法。
大家可以自己尝试。
第二种方法:思路:优先将整个字符串倒序。
声明一个数组利用gets(),或者fgets()两个函数去进行输入,其中gets由于不安全(容易发生数组越界访问导致数组被“撑爆”),fgets当你敲完一串字符回车的时候,这个回车也会被计入到数组中这个是非常需要注意,如果要利用fgets则需要特殊处理一下(因为我刚栽了跟头)
左图为fgets(),右图为gets() 可以看出fgets多计入了一个'\n'。可谓真是“贴心”。
将字符串全部倒序我们声明一个自定义函数reverse()并且将字符串的开头和结尾作为参数
实参全部都是地址,然后进行交换。
整体倒序完成之后我们就要进行对每个单词的倒序。
利用单词与单词之间都是以空格分开和最后字符串结尾是以'\0'结尾的两个特点作为判断依据
声明两个指针
利用move变量的不断移动来寻找每一个单词,再将start = move + 1 来重新指定单词的开头(当move指向了‘\0’时,则转变判断方法,不再让move往后移动跳过'\0')
每次都利用reverse就可以啦
代码:test_5_25/test_5_25/test.c · 李行者/study C - 码云 - 开源中国 (gitee.com)