出於某種原因,我無法使其工作!有誰能告訴我我哪裏出了問題嗎?這應該扭轉在給字符串的話(即從「這是一個測試」,以「測試是這樣的」)字符串中的反向字
#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