【发布时间】:2016-02-08 03:27:32
【问题描述】:
好的,所以这段代码几乎可以工作,只是它弄乱了每一行的结尾。 例如,如果我有一个包含以下三行的文本文件作为标准输入:
This is a test
For you to see
How this code messes up
输出读数:
siht si a
tsetroF uoy ot
eeswoH siht edoc sessem
pu
如果你发现了什么,请告诉我 谢谢
void reverse(char *beg, char *end)
{
while (beg<end)
{
char temp = *beg;
*beg++ = *end;
*end-- = temp;
}
}
void reverseWords(char *str)
{
char *beg = NULL;
char *temp = str;
while (*temp)
{
if ((beg == NULL) && (*temp != ' '))
{
beg = temp;
}
if (beg && ((*(temp + 1) == ' ') || (*(temp + 1) == '\0')))
{
reverse(beg, temp);
beg = NULL;
}
temp++;
}
}
【问题讨论】:
-
甚至不看你的代码,很明显,行为是它在每行末尾包含换行符作为行中最后一个单词的一部分。因此,它将换行符作为最后一个单词的第一个字符,从而产生观察到的输出。您需要代码来处理换行符。
-
我在第二个 if 语句中将 +1 更改为 +2,第二次有加法。似乎工作
标签: c arrays string char reverse