【发布时间】:2014-01-25 15:39:35
【问题描述】:
我给你们我的整个代码。有点长,真心希望你能看懂:
#include <iostream>
using namespace std;
char const* reverseWordsOnly(const char* s)
{
int k;
int p = strlen(s);
for (int i = 0; i <= p; i++)
{
if (s[i] == ' ')
{
for (k = i - 1; (k != -1) && (s[k] != ' ') && (s[k] != ',') && (s[k] != ';') && (s[k] != '.'); k--)
return &s[k];
return " ";
}
if (s[i] == ',')
{
for (k = i - 1; (k != -1) && (s[k] != ' ') && (s[k] != ',') && (s[k] != ';') && (s[k] != '.'); k--)
return &s[k];
return ",";
}
if (s[i] == ';')
{
for (k = i - 1; (k != -1) && (s[k] != ' ') && (s[k] != ',') && (s[k] != ';') && (s[k] != '.'); k--)
return &s[k];
return ";";
}
if (s[i] == '.')
{
for (k = i - 1; (k != -1) && (s[k] != ' ') && (s[k] != ',') && (s[k] != ';') && (s[k] != '.'); k--)
return &s[k];
return ".";
}
}
}
int main()
{
char s[1002];
cin.getline(s, 1002, '\n');
strcat(s, " ");
reverseWordsOnly(s);
return 0;
}
那么它的作用是什么......它反转了字符串中单词的字母顺序。例如,如果你写下Something.. terribly wrong.,它应该返回gnihtemoS.. ylbirret gnorw.间隔和点作为分隔符。问题是我必须使用这个非常精确的函数char const* reverseWordsOnly(const char*),我完全不知道如何使它与这些常量和指针一起工作。我编写的代码是完全可编译的,但在控制台中只返回一个空格。我做错了什么?有任何想法吗?如何在函数中返回那些指针值?
【问题讨论】:
-
你真的输出了什么吗?我在这段代码中看不到任何应该在控制台中显示任何内容的内容。
-
@typ1232 我在四种 if 情况下
return &s[k].. 可能不对.. 我进行了实验,因为当我有一个指针时它不会让我return s[k]。跨度> -
这不是今天早些时候发布的 - 以为已经回答了......
-
建议不要在收到答案后编辑您的帖子 - 或许可以附加您的最终想法。之前的帖子stackoverflow.com/questions/21350160/… 问题和答案在最终编辑中没有意义。
-
您不能在 return 周围放置一个循环并假设您的函数将继续执行从每个 return 收集所有结果。它绝对不会那样做。
标签: c++ function pointers constants