出于某种原因,我无法使其工作!有谁能告诉我我哪里出了问题吗?这应该扭转在给字符串的话(即从“这是一个测试”,以“测试是这样的”)字符串中的反向字
#include <stdio.h>
#include <stdlib.h>
char *reverse(char const *input)
{
char *ret = (char *)malloc(sizeof(char) * strlen(input));
int length = 0;
int numWords = 1;
int i;
for(i=0; input[i]!=NULL; i++)
{
length++;
if(input[i]==' ')
numWords++;
}
char words[numWords];
int currentWord = numWords;
for(i=0; input[i]!=NULL; i++)
{
if (input[i]==' '){
currentWord--;
}else{
words[currentWord] = words[currentWord] + input[i];
}
}
for(i=0; i < numWords; i++)
{
ret = ret + words[i];
}
return ret;
}
int main(int argc, char **argv)
{
int nTestcase = 0;
int i = 0;
char inputstr[100];
char *reversedStr = NULL;
scanf("%d\n", &nTestcase);
for (i = 0; i < nTestcase; i++)
{
fgets(inputstr, 100, stdin);
reversedStr = reverse(inputstr);
printf("%s\n", reversedStr);
free(reversedStr);
memset(inputstr, 0, 100);
}
return 0;
}
您有具体问题吗?哪部分不起作用? – 2013-02-16 04:29:46
你的代码中的这一行是什么意思[currentWord] = words [currentWord] + input [i]; ???你正在添加两个字符,并将其存储在另一个! – 999k 2013-02-16 04:38:37
看起来太复杂了。你为什么关心字数?从最后开始,向后扫描寻找空间;当你找到一个空格时,打印字符串后面的字符部分,并在下一个空格之前结束。 – Caleb 2013-02-16 04:42:31