【C语言】字符串逆序

(1)输入abc,输出cba

#include<stdio.h>

void fun(char *p,int m);
int main()
{
    char a[]="abc";
    char *p=a;
    printf("%s\n",a);//输出原字符串
    fun(p,3);
    printf("%s\n",a);//输出逆序后字符串
    return 0;
}
void fun(char *p,int m)
{
    int i;
    char temp=p[0];
    p[0]=p[2];
    p[2]=temp;
}

问题:程序固定了输出的字符串及长度,不够实用

(2)键盘输入字符串:可以从键盘输入,包含空格

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

void display(char* p,int n);
int main()
{
    char a[100],n;
    printf("请输入字符串:");
    gets(a);
    char *p=a;
    n=strlen(a);
    display(p,n);
    return 0;
}
void display(char *p,int n)//从后往前输出
{
    int i;
    printf("逆序字符串:");
    for(i=n-1;i>=0;i--)
    {
        printf("%c",&p[i]);//输出逆序字符串
    }
    printf("\n");
}

(2)键盘输入字符串:可以从键盘输入,包含空格

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

void strrev(char *s,int n)         //n = strlen(s)-1
{
    int i;
    char tmp;
    for(i = 0;i < n;i++,n--)       //次数为n/2
    {
        tmp = s[i];
        s[i] = s[n];
        s[n] = tmp;
    }
}

int main()
{
    char s[100];

    printf("please input s:\n");
    gets(s);

    int n = strlen(s)-1;

    strrev(s,n);

    printf("mystring:\n%s\n",s);

    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_42417182/article/details/84975990