严凯 发表于 2020-12-22 22:19:44

指针,函数

#include<stdio.h>
#include<string.h>
#define MAX 1024
int n;
int main()
{
        void fun(char *s);
        char a;
        scanf("%s",a);
        n=strlen(a);
        fun(a);
}
void fun(char *s)
{
        int i=0;
        char p;
        p=s;
        for(i;i<n;i++)
                s=s;
        s=p;
        s=0;
    puts(s);
}


//编写函数fun(char *s),其功能是:把字符串中所有字符前移一个位置,串中的第1个字符移到最后
//为什么我这输入abcd,只输出bcd?

严凯 发表于 2020-12-22 22:21:59

改一下,最下面哪个s=p和s=0;改为s=p

hhp_3533 发表于 2020-12-22 22:40:00

本帖最后由 hhp_3533 于 2020-12-22 23:02 编辑

把改成s=0改成s=p;不就行了?你少算了一个结束符'\0'
for(i;i<n;i++)
                s=s;
循环最后执行的是s=s;s等于什么?
然后s=p相当于s=p?
      s=0?
你把puts改成:

for(i=0;i<=n;i++)
                {
                        printf("%c\t",s);//?没显示出来[ i ]
                }
看看是什么样子的....

hhp_3533 发表于 2020-12-22 22:48:55

#include<stdio.h>
#include<string.h>
#define MAX 1024
int n;
int main()
{
      void fun(char *s);
      char a;
      scanf("%s",a);
      n=strlen(a);
      fun(a);
               
}
void fun(char *s)
{
      int i=0;
      char p;
      p=s;
      for(i;i<n;i++)
                s=s;
      s=p;
      
    puts(s);
}

yzh666 发表于 2020-12-22 23:22:39

#include<stdio.h>
#include<string.h>
#define MAX 1024
int n;
int main()
{
      void fun(char *s);
      char a;
      scanf("%s",a);
      n=strlen(a);
      fun(a);
}
void fun(char *s)
{
      int i=0;
      char p;
      p=s;
      for(;i<n-1;i++)
               {
                      s=s;
                           }
      s=p;
      s[++i]='\0';
    puts(s);
}

yzh666 发表于 2020-12-22 23:25:29

你的是s是把\0赋值给i而不是i++
循环中也多进行了一次赋值
而且你的i++和i等与把\0和p同时赋给s
大概就这三点错误

风过无痕1989 发表于 2020-12-22 23:51:11

#include<stdio.h>
#include<string.h>
#define MAX 1024
int n;
int main()
{
        void fun(char *s);
        char a;
        scanf("%s", a);
        n = strlen(a);
        fun(a);
}
void fun(char *s)
{
        int i = 0;
        char p;
        p = s;
        for (i;i<n;i++)
                s = s;
        s = p;      // 字符已经前移了一位,若第一个字符不占此位,否则此位上就是结束符
        s = '\0';         // 重新加上结束符
        puts(s);
}

jackz007 发表于 2020-12-23 01:29:31

本帖最后由 jackz007 于 2020-12-23 01:31 编辑

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

#define MAX 1024

void fun(char * s)
{
      int i , n                                                   ;
      char p                                                      ;
      p = s                                                      ;
      for(n = strlen(s) , i = 0 ; i < n - 1 ; i ++) s = s ;
      s = p                                                      ;
}

int main(void)
{
      char a      ;
      scanf("%s" , a)    ;
      fun(a)             ;
      printf("%s\n" , a) ;
}
页: [1]
查看完整版本: 指针,函数