作者:旺仔牛叉糖 | 来源:互联网 | 2023-10-13 00:43
我正在尝试编写一个函数void reverseString(char* str,int size);
,该函数用于反转任何字符串的单词。
例如“ foo boo too”也应该是“ too boo foo”
我尝试用空字符'\ 0'替换空格,然后使用两个指针和strcpy
来交换值。
程序给我分段错误,为什么?这是使用我的逻辑实现的正确方法。
谢谢。
#include
#include
void reverse(char * s,int size){
int cntr = 0 ;
int tsize = 0;
while(*(s+tsize) ){
if(*(s+tsize) == ' '){
*(s+tsize) = '\0';
cntr++;
}
tsize++;
}
char * t = s+cntr-1;
while(t > s){
char * t2;
strcpy(t2,t);
strcpy(t,s);
strcpy(s,t2);
t--,s++;
}
}
int main()
{
char s[] = "boo foo too";
reverse(s,21);
printf("%s",*s);
}