在没有库函数的情况下反转字符串 c 会导致语义错误



每当我尝试运行它时,我都会遇到分段错误。不知道为什么。逻辑似乎是正确的,它可能与函数调用有关。调试器说了一些关于堆栈的事情,但我不知道如何解释这一点。

char* rev_string(char* t)
{
    int i;
    int j;
    i = j = 0;
    char tmp;
    while(t[i] != '')
        i++;
    while(i > j)
    {
        tmp = t[i];
        t[i] = t[j];
        t[j] = tmp;
        i--;
        j++;
    }
    return t;
}
我相信

您正在将第一个字符与字符串末尾的 null 终止字符交换,导致字符串的长度为 0,因为第一个字符是 .找到j标记后,您需要将标记向后移动一个。

char* rev_string(char* t)
{
    int i;
    int j;
    i = j = 0;
    char tmp;
    while(t[i] != '')
        i++;
    i--;
    while(i > j)
    {
        tmp = t[i];
        t[i] = t[j];
        t[j] = tmp;
        i--;
        j++;
    }
    return t;
}

相关内容

最新更新