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?的主要内容,如果未能解决你的问题,请参考以下文章