sgaizxt001 发表于 2018-11-10 21:31:04

字符串逆序输出

本帖最后由 sgaizxt001 于 2018-11-10 22:35 编辑

先附上代码

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

#define LENGTH 100

int main(void)
{
        void reverse(char s[],int a);
        char str;
        intl, i;
        char c;
       
        for (i = 0; i < LENGTH - 1 && (c = getchar()) != EOF && c != '\n'; i++)
        {
                str = c;
        }
        if (c == '\n')
        {
                str = '\n';
                i++;
        }
        str = '\0';
        l = i-1;

        printf("the string length is %d\n", l);

        reverse(str, l);
        system("pause");
}

void reverse(char s[], int a)
{
        char t;
        int i;
        i = 0;
        while (a>=0)
        {
                t = s;
                i++;
                a--;
        }
        for (i = 0; i <= a; i++)
        {
                printf("%c", t);
        }
}

主要是reserve函数好像没有作用,用断点测试,t[]和s[]能正确交换,但是不显示t[]呢。请问是哪里出了问题

wangjeu 发表于 2018-11-10 22:13:35

什么不显示?

sgaizxt001 发表于 2018-11-10 22:15:07

wangjeu 发表于 2018-11-10 22:13
什么不显示?

reserve函数没有作用,没有逆序输出字符串

wangjeu 发表于 2018-11-10 22:23:28

你为什么没有在主调函数前声明你的自定义函数

sgaizxt001 发表于 2018-11-10 22:30:17

wangjeu 发表于 2018-11-10 22:23
你为什么没有在主调函数前声明你的自定义函数

主函数第一行就声明了

wangjeu 发表于 2018-11-10 22:58:50

为什么在c != '\n'之后又 if (c == '\n')

CK.567 发表于 2018-11-10 23:31:42

因为在reserve 函数中 a在a--后为0了 i又等于0 所以不进行for循环 你应该再设置一个变量来存a的原值

sgaizxt001 发表于 2018-11-10 23:50:54

wangjeu 发表于 2018-11-10 22:58
为什么在c != '\n'之后又 if (c == '\n')

为了测试我把我写的getlinelength函数放到主函数中来了,直接copy的
页: [1]
查看完整版本: 字符串逆序输出