2915658109 发表于 2020-10-15 13:43:42

help me~

#include <stdio.h>
#include <string.h>
#define MAX 1024//给MAX定义
int main()
{
        char a;//定义一个字符数组a
        char *p=a;//指针P指向数组a 不需要&因为字符串首地址就可以读取下去
        //int b=0;//定义整数b为0
        printf("请输入一个字符串");
        fgets(a,MAX,stdin);//把键盘输入的字符串填入字符数组a中
        while(*p++!='\0')//如果没有读取到 结束符就一直开启循环
        {
       
                printf("%c",*(p-1));//因为还有个结束符
        }
       
        return 0;
}
这里的p-1是因为什么出现的 是因为最后的结束符'\0'还是因为p++自增出现的 p++不是先打印后加一吗

2915658109 发表于 2020-10-15 14:11:48

这么还没人。。

风过无痕1989 发表于 2020-10-15 14:29:07

如果不是 printf("%c",*(p-1)),而是 printf("%c",*p) ,那么,字符串的第一个字符将会被吃掉,从第二个字符开始输出

xieglt 发表于 2020-10-15 14:51:03

本帖最后由 xieglt 于 2020-10-15 14:53 编辑

      // 循环判定条件里 p = p +1了,所以输出的时候 要从第一个字符输出的话要输出 *(p-1)
      while(*p++!='\0')
      {
      
                printf("%c",*(p-1));
      }

或者写成这样
      while(*p!='\0')
      {
      
                printf("%c",*(p++));
      }
页: [1]
查看完整版本: help me~