提供了一个指向字符串的指针数组作为输入。任务是反转存储在输入指针数组中的每个字符串。我创建了一个名为 reverseString() 的函数,它反转传递给它的字符串。据我所知,此功能正常工作。
输入指针数组中存储/引用的字符串被一个一个地发送到reverseString()函数。但是当使用临时变量交换传递的字符串的值时,代码在 reverseString() 函数中的某个时刻挂起。我不明白为什么代码在交换值时挂起。请帮我解决这个问题。
代码如下:
#include <stdio.h>
void reverseString(char*);
int main()
{ char *s[] = {"abcde", "12345", "65gb"};
int i=0;
for(i=0; i< (sizeof(s)/sizeof(s[0]) ); i++ )
{ reverseString(s[i]);
printf("\n%s\n", s[i]);
}
getch();
return 0;
}//end main
void reverseString(char *x)
{ int len = strlen(x)-1;
int i=0;
char temp;
while(i <= len-i)
{ temp = x[i];
x[i] = x[len-i];
x[len-i] = temp;
i++;
}
}//end reverseString
最佳答案
您正在尝试更改字符串文字。
字符串文字通常是不可修改的,实际上应该声明为const
。
const char *s[] = {"abcde", "12345", "65gb"};
/* pointers to string literals */
如果你想制作一个可修改的字符串数组,试试这个:
char s[][24] = {"abcde", "12345", "65gb"};
/* non-readonly array initialized from string literals */
编译器会自动判断你需要3个字符串,但无法判断每个字符串需要多长。我将它们设为 24 字节长。
关于c - 处理存储在指向 C 中多个字符串的指针数组中的单个字符串的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1726350/