h-b-z-d-j-s-m 发表于 2022-11-17 16:29:43

字符输出

#include<stdio.h>
int main()
{
        char a[]="computer";
        char *p=a;
        int k=0;
        while(p)
        {
                p=p+k;
                printf("%c",*p);
                k=k+2;
        }
}
间隔输出computer,为什么没有输出正确结果啊,请问哪里错了?

tommyyu 发表于 2022-11-17 16:38:19

你这个 while(p) 在 p 一直不是空指针的时候会一直运行,然后就会导致这个 p 指针访问到未定义内存。还有,这并不是间隔输出,想要实现间隔输出需要删去第11行,然后把第9行变成p = p+2

代码:#include<stdio.h>
#include<string.h>
int main()
{
      char a[]="computer";
      char *p=a;
      while(p < a+strlen(a))
      {
                printf("%c",*p);
                      p = p+2;
                }
}

jackz007 发表于 2022-11-17 17:54:03

本帖最后由 jackz007 于 2022-11-17 17:56 编辑

间隔输出computer 是什么意思,无穷多个?,你的程序是死循环

你想得到输出 "computermputeruterer" 是这个意思?

jhq999 发表于 2022-11-17 18:19:53

本帖最后由 jhq999 于 2022-11-17 20:35 编辑

char a[]="computer";
      char *p=a;
      do
      {
                printf("%c",*p);
                p+=2;
      }while(*(p-1)&&*p);
int i=0,k=4;
      do
      {
                printf("%c",*p);
                for(i=1;i<=k;i+=1)if('\0'==*(p+i))break;
                if(i<k)break;
                p+=k;

      }while(1);

桃花飞舞 发表于 2022-11-18 00:17:16

不知你想输出什么?

zhangjinxuan 发表于 2022-11-18 08:57:02

桃花飞舞 发表于 2022-11-18 00:17
不知你想输出什么?

他可能想要这个:
cmptr

桃花飞舞 发表于 2022-11-18 23:28:53

zhangjinxuan 发表于 2022-11-18 08:57
他可能想要这个:
cmptr

不是,他是想要cmue

zhangjinxuan 发表于 2022-11-19 08:42:58

桃花飞舞 发表于 2022-11-18 23:28
不是,他是想要cmue

不好意思,看错了
页: [1]
查看完整版本: 字符输出