C:反转字符串时的段错误

标签 c

    void reverse_String(char a[], int start, int length){
    int i;
    int j = length;
    for(i = start; i != j ; i++, j--){
        a[i] ^= a[j];
        a[j] ^= a[i];
        a[i] ^= a[j];
    }
    printf("%s", a);
   }

int main(int argc, char *argv[]){
    int length;
    char word[strlen(argv[1])];
    strcpy(word,argv[1]);
    length = strlen(word);
    reverse_String(word,0,length);
    return 0;
}

为什么某些条目会出现段错误,但其他条目却有效? (argv[1] 是输入的任何字符串)

最佳答案

如果字符数是偶数,i永远不会等于j。您需要将条件更改为 i < j

关于C:反转字符串时的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35515055/

相关文章:

c - 使用 malloc 进行堆栈对齐

c - 为什么这个 C 程序(使用套接字和文件处理)在文件末尾添加不需要的字符?

c - 释放c中的内存并出现未知错误,free(&p->data) 不起作用

c - 消除字符串中以空格结尾的特殊字符

c - 为什么这个程序会产生运行时错误?

c - connect() 会阻塞 TCP 套接字吗?

c - 这个AVL平衡代码有什么问题?

c - 在链表错误中用字符串替换字符?

c - fgets 不将提供的输入存储在目标变量中

计算每个唯一数字的出现次数 : algorithm almost works