当前位置:  开发笔记 > 编程语言 > 正文

C函数,反向字符串

如何解决《C函数,反向字符串》经验,为你挑选了1个好方法。

我想要一个关于你从main调用反向文本的函数的帮助.然而,该程序工作,"或多或少",但它崩溃.这是代码的外观

#include 
#include 
#include 

void reverse(char * array, int numberOfChars) {
    int begin = 0;
    int end = 0;
    char temp;

    end = strlen(&array) - 1;
    printf("%s", &array);

    while (begin < end) {
        temp = array[begin];
        array[begin] = array[end];
        array[end] = temp;
        begin++;
        end--;
    }
}

int main() {
    reverse('supm', 4);
    return(0);
    getchar();
}

字符串被反转为mpus,但随后崩溃,显然似乎数组只能接受4个字符,如果我将其更改为5而整数值为5,则根本不起作用.任何帮助,将不胜感激.



1> MikeCAT..:

strlen(&array)并且printf("%s", &array);错了.它们将传递指针所在位置而不是字符串所在位置.使用strlen(array)printf("%s", array);.

reverse('supm', 4); 也是错误的,因为这个调用的第一个参数不是字符串而是实现定义的整数.

请注意,只是将其更改为reverse("supm", 4);不起作用,因为不允许修改字符串文字.

此外,最后一个getchar();将不会被执行,因为它是在之后return 0;.

试试这个:

#include 
#include 
#include 

void reverse(char * array, int numberOfChars) {
    int begin = 0;
    int end = 0;
    char temp;

    end = strlen(array) - 1;
    printf("%s", array);

    while (begin < end) {
        temp = array[begin];
        array[begin] = array[end];
        array[end] = temp;
        begin++;
        end--;
    }
}

int main() {
    char supm[] = "supm";
    reverse(supm, 4);
    puts(supm); /* added this to see if this code is working well */
    return(0);
}

也许您应该使用参数numberOfChars而不是strlen(array)因为您传递参数,但它根本不使用.

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有