C语言怎么用函数把一个字符串逆序存放,比如说原字符串是abcd,怎么将他改为dcba?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言怎么用函数把一个字符串逆序存放,比如说原字符串是abcd,怎么将他改为dcba?相关的知识,希望对你有一定的参考价值。

我以前写了这个程序。略粗糙

源代码:

#include <stdio.h>
#include <string.h>
#define ARR_SIZE 80 //字符串最大长度
int Inverse(char a[]);
void main(void)

char str[ARR_SIZE]=0;
printf("P199 6.12\n"); //题号
printf("---------------------Inversed sequence---------------------\n");
printf("\nPlease enter a charstring:\n\n");
gets(str); //输入一个字符串
Inverse(str); //调用函数逆序存放

int Inverse(char a[])

char b[ARR_SIZE]=0;
int i;
int maxsize;
maxsize=strlen(a)-1; //得到最后一个字符位置
for (i=0;i<strlen(a);i++) //依次交换存放

b[maxsize]=a[i];
maxsize--;

printf("\nThe changed result is:\n\n");
puts(b); //输出交换存放结果
printf("\n");
参考技术A //#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
#include "string.h"

void main(void)
char str[]="abcd";
printf("%s\n",str);
printf("%s\n",strrev(str));
本回答被提问者和网友采纳
参考技术B 栈 递归 输入缓存 都可以 参考技术C void reverse(char str[])


int len = strlen(str), i, temp;

for(i = 0; i < (len >> 1); i++)


temp = str[i];

str[i] = str[len - i - 1];
str[len - i - 1] = temp;



参考技术D 貌似没有现成的函数,只能自己写一个了,很简单:
char *inverse(char * s)

int n = strlen(s);
char *p = s, *q = s+n-1, temp;
while (p <= q)

temp = *p;
*p = *q;
*q = temp;
++p;
--q;

return s;

C语言将字符串逆序输出问题(用函数)

写一个函数,使输出的字符串逆序存放,然后这是我的程序:
#include<stdio.h>
#include<string.h>
int main()

char str[100];
char opstr[100];
int length=0;
void op(char str[100],char opstr[100],int length);
length=strlen(str);
printf("nput string:\n");
scanf("%s",str);
op(str,opstr,length);
printf("inverse string:%s\n",opstr);

return 0;

void op(char str[100],char opstr[100],int length)

int i=0;
for(i=0;i<length;i++)

opstr[i]=str[length-i];



运行结果

求高手帮忙,额,我字符串这块没学好,麻烦了

采用函数进行字符串逆序输出,过程为:

    定义函数,参数为字符串指针

    定义局部变量指针t指向原字符串

    移动t指针到字符串尾

    向移动t指针,直到回到原指针头,输出各位置字符。

参考代码:

参考技术A

没有看明白你的代码,如果只是想把字符逆转后再输出.这应是很简单的,下面我写了一个逆转字符后并输出的代码:

#include <stdio.h>
#include <string.h>
#define  STRING_MAX_LONG 100
/*  Function prototypes */
void swaping(char*,char*),InverseString(char*,int);

void main()

   char str[STRING_MAX_LONG];
   int strLen=0;
   printf("Please input string:");
   scanf("%s",str);

   InverseString(str,strlen(str));
   printf("\\nInverse string after:%s\\n",str);


void swaping(char *a,char *b)

char temp=*a;
*a=*b;
*b=temp;

void InverseString(char s[],int len)

int i,k=-1,j;
i=j=0;

for (i=k+1;i<len;i++)
       j=len-i+k;
   if(i>=j) break;
   swaping(&s[i],&s[j]);

参考技术B 好像你的输出有问题,如果没记错,字符的输出c语言里面只能用for循环一个一个字符输出吧。c++可以直接写字符数组名输出 参考技术C 你先确定了长度

length=strlen(str);

再读入 scanf("%s",str);

很明显者两者对不上追问

修改之后还是有问题

追答

下面在你代码上修改好了,有几个小问题:

#include<stdio.h>
#include<string.h>
int main()

char str[100];
char opstr[100];
int length=0;
void op(char str[100],char opstr[100],int length);

printf("input string:\\n");
scanf("%s",str);
length=strlen(str);//赋值移动到这里 
op(str,opstr,length);
printf("inverse string:%s\\n",opstr);


return 0;

void op(char str[100],char opstr[100],int length)

int i=0;
for(i=0;i<length;i++)

opstr[i]=str[length-1-i];//需要再多减1 

opstr[i]='\\0';//需要增加字符串结尾字符 

以上是关于C语言怎么用函数把一个字符串逆序存放,比如说原字符串是abcd,怎么将他改为dcba?的主要内容,如果未能解决你的问题,请参考以下文章

C语言将字符串逆序输出问题(用函数)

C语言:编写一个函数,将一个字符串按逆序存放。在主函数中输入和输出字符串。

C语言如何随机输出一个字符串?

用C语言把一个数组中的值按逆序重新存放?

c语言程序 输入一字符串存入数组中,逆序存放并输出

用C语言怎么样把用户输入的字符串转化成在源程序中可执行的表达式?