用指针和冒泡排序实现c中字符串的反转

jk9hmnmh  于 2023-01-08  发布在  其他
关注(0)|答案(1)|浏览(177)

我必须写一个程序,接受一个字符串输入,然后反转它,所以基本上反转了文本,我还想尝试重用我的一个代码,它有冒泡排序,并且认为它可以工作。
这是我的代码:

#include <stdio.h>

int main(){
int n;
char arr[n];
printf("Input length:\n");
scanf("%d",&n);
printf("Input string:\n");
scanf("%s",&arr);
bsort(arr);
printf("%s",arr);


}

void swap(char *x,char *y){
char temp=*x;
*x=*y;
*y=temp;
}

void bsort(char *arr, int n){
int i, j;
for(i=0;i<n;i++){
    for(j=0;j<n;j++){
        if(&arr[j]<&arr[j+1]){
            swap(arr[j],arr[j+1]);
        }
    }
}
}

我不知道是不是把数据类型、运算符或函数都搞混了。当我运行程序时,什么也没有打印出来。我希望能有任何建议。

ddhy6vgd

ddhy6vgd1#

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

void reverseString(char* str)
{
    int l, i;
    char *beginPtr, *endPtr, ch;

    // Get the length of the string using this func instead of aking input
    l = strlen(str);

    // Setting the beginPtr
    // to start of string
    beginPtr = str;

    //Setting the endPtr the end of
    //the string
    endPtr = str + l - 1;
    //basically we add the (len-1)
    
    // Swap the char from start and end
    // index using beginPtr and endPtr
    for (i = 0; i < (l - 1) / 2; i++) {

        // swap character
        ch = *endPtr;
        *endPtr = *beginPtr;
        *beginPtr = ch;

        // update pointers positions
        beginPtr++;
        endPtr--;
    }
}

// Driver code
int main()
{

    // Get the string
    
    char str[100];
    printf("Enter a string: ");

    scanf("%s",&str);

    // Reverse the string
    reverseString(str);

    // Print the result
    printf("Reverse of the string: %s\n", str);

    return 0;
}

我试着用注解来解释这段代码,如果你不想使用string. h,那么你可以要求input输入字符串的长度

相关问题