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

作者&投稿:巩龚 (若有异议请与网页底部的电邮联系)
c语言字符串逆序输出问题,要求不能使用函数,问题如图~

#include #include void main(){int i,n;char ch,str[50]={'\0'};gets(str);n=strlen(str);for(i=0;i<=n/2;i++){ch=str[i];str[i]=str[n-i-1];str[n-i-1]=ch;}puts(str);}运行示例:

void fun(char *str)
{
char ss[128]={0}; //<<<补一下初始化或在下面补一个结束
int i, j = 0;
for (i = strlen(str) - 1, j = 0; i >= 0; i--)
{
ss[j] = str[i];
j++;
}//****新串没有结束!!!
ss[j] = '\0';//<<<补在这里,或在开始时把ss全置为0
strcpy(str, ss);//复制到原串中,前面是目标(会被改写),第二参数是来源,没有初始化之前这里会读ss越界引起崩溃
}

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

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

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

  3. 移动t指针到字符串尾

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

参考代码:



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

#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("
Inverse string after:%s
",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]);
}
}


好像你的输出有问题,如果没记错,字符的输出c语言里面只能用for循环一个一个字符输出吧。c++可以直接写字符数组名输出

你先确定了长度

length=strlen(str);

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

很明显者两者对不上


c语言程序 输入一字符串存入数组中,逆序存放并输出
对键盘输入的字符串进行逆序,逆序后的字符串仍然保留在原来的字符数组中,最后输出。(不得调用任何字符串处理函数),例如:输入 hello world 输出 dlrow olleh

C语言,输入一个字符串,逆序排列后输出
可以参考下面的代码:include "stdio.h"main(){ char strA[200];char Temp;int i=0,Length=0;clrscr();printf("请输入一个字符串:");gets(strA);Temp=strA[0];while(Temp!='\\0'){ Length++;Temp=strA[i++];} Length--;for(i=0;i<Length\/2;i++){ Temp=strA[i];strA[i]=strA...

5、输入一个字符串,对该字符串进行逆序,输出逆序后的字符串。
i=0; ch!='\\n'; i++){ a[i]=ch;cnt++;ch=getchar();} for(i=0, j=cnt-1; i<cnt; i++, j--)b[j]=a[i];for(i=0; i<cnt; i++)printf("%c", b[i]);return 0;} 运行:输出格式:在一行中输出逆序后的字符串。输入样例:Hello World!输出样例:!dlroW olleH ...

C语言:输入一个字符串,然后逆序输出
include <stdio.h> int main(){ int len,i;char str[100];gets(str);len=strlen(str);for(i=len-1;i>=0;i--)printf("%c",str[i]);return 0;}

C语言将字符串逆序输出问题(用函数)
采用函数进行字符串逆序输出,过程为:定义函数,参数为字符串指针 定义局部变量指针t指向原字符串 移动t指针到字符串尾 向移动t指针,直到回到原指针头,输出各位置字符。参考代码:

用C语言编写:将一个字符串存放在数组中,并将逆序输出。谢谢
C语言,直接按逆序输出:include <stdio.h> include <stdlib.h> void main(){ char a[]="abcd123...Z";int i;for (i=strlen(a)-1;i>=0;i--) printf("%c",a[i]);}

用C语言写 字符串逆序输出
逆序输出有很多种,具体的实现方法取决于你题目的要求1. 如果只是要求逆序输出,那么可以采用类似的方法:void reverse(char *s){if(*s=='\\0')return;reverse(s+1);printf("%c",*s);}这种方法在s很长的情况下会一直递归到底,不是很好。2. 如果需要将字符串整个逆序在函数外面输出,那么可能...

C语言中,如何逆序任意输出的字符串? 求简单易懂的方法。
一般的逆序用两个while,但没多少人用,给你三种常见方法 一 设置两个指针,分别指向字符串的头部和尾部,然后交换两个指针所指的字符,并向中间移动指针直到交叉。char *Reverse(char *s){ \/\/ p指向字符串头部 char *p = s ; \/\/ q指向字符串尾部 char *q = s ; while(*...

C语言:编写一个函数,将一个字符串按逆序存放。在主函数中输入和输出字...
反序字符串,只需要将首尾字符依次调换即可。include <stdio.h>#include <string.h>\/\/ 反序字符串x并返回char* reverse(char *x){ int len = strlen(x); int i, n = len \/ 2; char tem; for (i = 0; i <= n; i++) { tem = x[i]; x[i] = x[len...

怎么用java实现,题目是:将一个英文句子逆序输出,例如 I am a student...
java实现字符串逆序输出单词方式如下:实现思路:先将字符串变为字符串数组,然后逆序赋值给另一个字符串数组,最后再利用StringBuffer转变为字符串输出,方法如下:public class Demo{public static void main(String[] args){String str = "I am a student";String str1 = wordsReverse(str);\/\/输出...

武川县17614105756: 用函数实现把一个字符串逆序输出,函数名为revert -
始昏祛痹: #include <iostream.h> #include <string.h> #define LENGTH 80//反序一个字符串 void revert(char s[]) {char c;int i,j;j = strlen(s) - 1;for(i = 0;i < j;i ++){c = s[i];s[i] = s[j];s[j] = c;j --;} } void output(char s[]) { cout<<"The string is reversed:"<<s<<...

武川县17614105756: C语言 题目 编写一个函数,完成将一个字符串中的字符逆序输出,即最后一个先输出,第1个最后输出 -
始昏祛痹: 这个简单 #include<stdio.h> #include<string.h> void fun(char *str) { int i=strlen(str)-1; while(i>=0) { printf("%c \n",str[i]); i--; } }其实我有个应用指针做成递归函数的想法今天时间有点晚不做了

武川县17614105756: C语言递归函数,实现字符串逆序输出,代码如下,想不通运行过程和原理,求解释 -
始昏祛痹: #includevoidf(){charch;if((ch=getchar())!='\n')f();if(ch!='\n')printf("%c",ch);//这个输出语句是写在了递归调用之后,会被压栈,先压栈的后输出,所以可以实现逆序输出,如果把这个语句移动到f();就不会压栈了}voidmain(){f();pri

武川县17614105756: C语言 函数调用, 输入字符串,逆序输出 -
始昏祛痹: void fun(char *str) { char ss[128];int i, j = 0; for (i = strlen(str)-1 , j = 0; i >= 0; i--){ ss[j] = str[i];j++;}ss[j]='\0'; //结束字符串strcpy(str, ss);//前面的参数是目标 strcpy(目标,源),你写反了 }

武川县17614105756: C语言编程,写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符 -
始昏祛痹: #include<stdio.h>#include<string.h> void printit(char *str,int length) //返序输出函数 { int i;for(i=length-1;i>=0;i--) //从给定的字符串的最后一位依次向前遍历各字符 putchar(*(str+i)); //每向前一个字符即打印该字符,直至第一个字符为止.} int ...

武川县17614105756: 编写一函数,使输入的一个字符串反序存放,并在主函数中输入、输出字符串.(C语言)
始昏祛痹: #include&lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;conio.h&gt; typedef struct LNode{ char data; struct LNode * next; }LNode, * LinkList; LinkList CreateList_L(LinkList L)/*头插法建立链表*/ { char c; LinkList p; L = (LinkList)malloc(sizeof(...

武川县17614105756: 用一函数inv将一个字符串的字符逆序排列.输入输出在main函数中完成 用c语言 -
始昏祛痹: #include void inv(char* a){ int len = strlen(a), i; char t; for(i=0;i t = a[i]; a[i] = a[len-1-i]; a[len-1-i] = t; } } int main(){ char a[255]; gets(a); inv(a); puts(a); return 0; }

武川县17614105756: c语言:编写函数,采用递归方法实现将输入的字符串按反序输出. -
始昏祛痹: #include<stdio.h> void fun(char *s) { if(*s) {fun(s+1);putchar(*s);} } void main() { char s[81]; gets(s); fun(s); }

武川县17614105756: c++编写函数实现一个字符串的逆序.在主函数中输入字符串,调用函数将字符串逆序,而后输出. -
始昏祛痹: #include using namespace std; void rev(char s[]) {char *p,*q,c;for(p=s;*p;p++);for(q=s,--p;q<p;){c=*p;*p--=*q;*q++=c;} } int main() { char s[100];cin.getline(s,100);rev(s);cout<<s<<endl;return 0; }

武川县17614105756: C语言写用一个函数实现字符串数组的倒序输出,返回字符串 下面是我写的程序 -
始昏祛痹: 你犯了两个错误.1.b的生命周期只是output函数,当运行到printf的时候,b的内存已经被系统回收了,所以p指向地的一块无效的内存.2.b应该被初始化.申请b的时候,它里面的内容不确定,而printf会逐个输出字符直到遇到结束符'\0'.我修改后是这...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网