在这段代码中,我试图使用函数来反转字符串。这里我使用了一个指针数组来存储一些数组。*(*(string+i)+j)
这条线适用,i=0
但一旦i
增加i=1
它就会给出分段错误。我无法理解可能是什么问题。
#include<stdio.h>
#include<string.h>
char**reverse(char**);
int main()
{
char *final[2],*s[] = {
"To err is human...",
"But to really mess things up...",
"One needs to know C!!"
} ;
int i;
for(i=0;i<=2;i++)
puts(s[i]);
reverse(s);
for(i=0;i<=2;i++)
puts(final[i]);
return 0;
}
char** reverse(char*string[2])
{
char *temp[2];
int len,i,j,k;
for(i=0;i<=2;i++)
{
len=strlen(string[i]);
k=0;
for(j=len-1;j>=0;j--)
{
*(*(temp+i)+k)=*(*(string+i)+j);
/*this line work for i=0 but give segmentation fault for i=1;*/
printf("%c",*(*(temp+i)+k));
k++;
}
printf("\n");
}
return temp;
}