相关疑难解决方法(0)

在C中反转一个字符串

我开发了一个反向字符串程序.我想知道是否有更好的方法来做到这一点,如果我的代码有任何潜在的问题.我期待练习C的一些高级功能.

char* reverse_string(char *str)
{
    char temp;
    size_t len = strlen(str) - 1;
    size_t i;
    size_t k = len;

    for(i = 0; i < len; i++)
    {
        temp = str[k];
        str[k] = str[i];
        str[i] = temp;
        k--;

        /* As 2 characters are changing place for each cycle of the loop
           only traverse half the array of characters */
        if(k == (len / 2))
        {
            break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c string pointers

34
推荐指数
8
解决办法
16万
查看次数

使用指针修改字符串时发生分段错误?

上下文

我正在学习C,我正在尝试使用指针来反转字符串.(我知道你可以使用一个数组;这更多的是关于学习指针.)

问题

尝试运行下面的代码时,我不断遇到分段错误.海湾合作委员会似乎不喜欢这*end = *begin;条线.这是为什么?

特别是因为我的代码几乎与另一个问题中讨论的非邪恶C函数相同

#include <stdio.h>
#include <string.h>

void my_strrev(char* begin){
    char temp;
    char* end;
    end = begin + strlen(begin) - 1;

    while(end>begin){
        temp = *end;
        *end = *begin;
        *begin = temp;
        end--;
        begin++;
    }
}

main(){
    char *string = "foobar";
    my_strrev(string);
    printf("%s", string);
}
Run Code Online (Sandbox Code Playgroud)

c string reverse pointers

10
推荐指数
2
解决办法
4万
查看次数

反转c型字符串

这是我的代码:

    void reverseStr(char *str)
{
    if (str == NULL) return;
    int i=0, j=strlen(str) -1;
    while(i<j)
    {
        char temp = str[j];  //i think this is the cause of the problem
        str[j] = str[i];
        str[i] = temp;
        i++;
        j--;
    }
}
Run Code Online (Sandbox Code Playgroud)

所以这里是它的所在:

int main()
{   
    char *str = "Forest Gump";
    reverseStr(str);
    cout << str;
}
Run Code Online (Sandbox Code Playgroud)

这是我的错误:

/Applications/TextMate.app/Contents/SharedSupport/Bundles/C.tmbundle/Support/bin/bootstrap.sh:line 7:1931总线错误"$ 3".out

有什么想法吗?提前致谢.

c++ c-strings

0
推荐指数
1
解决办法
975
查看次数

在c ++中,用c-string反转的最快方法是什么?

在仅使用库的c ++中,用c-string反转的最快方法是什么?特别是,是否有任何方法需要少于O(strlen)时间?

c++

0
推荐指数
1
解决办法
4147
查看次数

标签 统计

c ×2

c++ ×2

pointers ×2

string ×2

c-strings ×1

reverse ×1