严凯 发表于 2021-4-22 12:42:53

字符串

#include<stdio.h>
#include<string.h>
#define Stack_Size 80
int main()
{
      char b;
      char *a;
      int i=0;
      do
      {
      scanf("%s",b);
      //strcpy(a,b);
                a=b;
      printf("%s\n",a);
      i++;
      }while(getchar()!='\n');
                printf("\n");
      for(i=i-1;i>=0;i--)
      {
                printf("%s\n",a);
      }
      return 0;
}




//为什么上面的printf和下面的printf输出不一样?

hunterac 发表于 2021-4-23 07:46:35

a,a,a指向的地址都是一样的,你循环赋值就是不断覆盖上一次的赋值,最后只输出最后一次的赋值,你把指针指向的地址打印出来看下就清楚了

万千只cnm 发表于 2021-4-23 09:35:54

你i只加了一次呀 一次循环里

严凯 发表于 2021-4-24 19:01:42

hunterac 发表于 2021-4-23 07:46
a,a,a指向的地址都是一样的,你循环赋值就是不断覆盖上一次的赋值,最后只输出最后一次的赋值,你 ...

那我应该怎么改?

hunterac 发表于 2021-4-24 20:34:30

我只会这么写,我在网上查了下,你指针指向的数组,字符串的数组内存没有定义,所以你的指针指的方向也不能确定#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define Stack_Size 80

int main() {
        char *a;
        int i = 0;
        do {
                a = (char *)malloc(sizeof(char) * 32);
                scanf("%s", a);
                printf("%s\n", a);
                i++;
        } while (getchar() != '\n');
        printf("\n");
        for (i = i - 1; i >= 0; i--) {
                printf("%s\n", a);
        }
        return 0;
}
页: [1]
查看完整版本: 字符串