在C中反转字符串的位置

时间:2011-08-29 12:02:39

标签: c

我希望以特定格式反转字符串。

例如,"My name is Nishant"应转换为"Nishant is name My"

2 个答案:

答案 0 :(得分:1)

如果你的单词在char[] words数组中,那么这是一个简单的循环:

for (i = 0; i < mid; i++)
    exchange(words[i], words[number_of_words - i]);

了解midnumber_of_wordsexchange的合理定义。

如果您拥有的只是一个包含整个语句的大字符,那么首先执行strtok会很有帮助。然后,使用上面的循环。

答案 1 :(得分:0)

向您的导师致以问候。如果这是家庭作业,你应该自己编写代码。

这里有一点提示:使用char指针迭代数组中的每个字符,直到你在最后点击NUL终止符。现在反向迭代,直到你击中一个空格。将您的位置保存在另一个指针中,向前移动一个然后将每个字符复制到输出缓冲区中但不包括NUL。

现在检索保存场所的另一个指针中最后一个空格的位置,然后重新备份。当你向前移动时,实际上你需要在遇到空格 - ASCII'\ 0'或零字节时停止 - 而不仅仅是NUL。

如果您在开始时向前迭代时将某个空格中的每个空格的位置保存起来会更快一些。那样你就不需要在整个字符串上向后迭代,只需对每个单词进行短迭代。代码会有点复杂。

对于像单个英语句子这样的短字符串来说,效率的提高是微不足道的,但是很多时候你会将你刚刚读入内存的大文件转换为内存。