1

我下面的代码有问题,我正在尝试反转一个字符串,但是我有运行时错误,谁能帮我检查一下?问题是:
例如:

输入: char *s = "这是我的字符串"

输出:“字符串我是这个”

#include <iostream>   
using namespace std;

void reverse(char *str, int start, int end){
    char tmp; 
    while(end > start){
        tmp = str[end];
        str[end] = str[start];
        str[start] = tmp;
        end--;
        start++;
    }
}

int main()
{
   char *s = "This is my string";
   int len = strlen(s);
   int start = 0;
   int end = len-1;
   reverse(s, start, end);   
   printf("%s", s); 
   end = 0;
   while( end < len){
        if(s[end] == ' '||s[end] =='\0'){
            while(s[start]==' ')
                start++;
            reverse(s,start,end-1);
            start = end;
        }   
        end++;
   }
   printf("%s", s); 
   cin.get();
}
4

1 回答 1

3

您不能修改此字符串:

char *s = "This is my string";

你声明不正确,应该是

const char* = "This is my string";

通常,这些字符串分配在您无法写入的内存区域中。您应该创建另一个缓冲区来将反转的字符串写入。

于 2012-09-03T17:06:02.510 回答