fc1735 发表于 2016-10-29 14:12:53

利用指针赋值的问题

本帖最后由 fc1735 于 2016-10-29 14:28 编辑


#include <stdio.h>

int main()
{
      char a;
      char* b = a;
      *b++='Y';
      *b++='O';
      *b++='U';
      *b++='\0';
      printf("%s",b);
      return 0;


}




上边代码哪里出错了,不懂编译执行后为何不是想要的结果。{:10_266:} {:10_266:}

人造人 发表于 2016-10-29 19:07:55

你确定找不到哪里出了问题?

#include <stdio.h>

int main()
{
      char a;
      char* b = a;
      *b++='Y';
      *b++='O';
      *b++='U';
      *b++='\0';
//      printf("%s",b);
      printf("%s",a);
      return 0;


}

fc1735 发表于 2016-10-29 23:28:23

抱歉没看清楚 {:10_284:}

其实是在S1E22的课后作业有一题一直没办法实现,才到处尝试是不是有什么地方是代码本身就出问题的。

实现strcpy函数的:

不知哪里出错


#include<stdio.h>
#define Max 100

int main()
{
        char a[(Max+4)];
        char b;
        int n;
        printf("I'll demonstrate the strcmp function.\nEnter the first sentence.\n:");
        fgets(a,Max,stdin);
        printf("Enter the second sentence that u want to be compared with the previous one.\n");
        fgets(b,Max,stdin);
        printf("Now, enter the total number of charactor u want to compare with.");
        scanf("%d",&n);
        n=strcmp_n(a,b,n);
        if (n>0)
        {
                printf("%d",n);
                if (n-1>0) printf("\nWhich is right after %s",(a+100));
        }
        else printf("Former %d words are equal.",(-n));
        return 0;

}

int strcmp_n(char* i,char* j,int k)
{
        int m=1;
        while ((*i==*j++)&& k--&& *i)
        {
                if (*i++<0)
                {
                        if (*i!=*j) goto ret;
                        if (*(i+1)!=*(j+1)) goto ret;
                        i+=2;
                        j+=2;
                }
                m++;
        }
        if (k==-1||*i == 0) return (1-m);
ret:        j-=2;
        if (*j<0)
        {
                j-=2;
                *(i+100)=*j++;
                *(i+101)=*j++;
                *(i+102)=*j;
                *(i+103)='\0';
        }
        else
        {
                *(i+100)=*j;
                *(i+101)='\0';

        }
       
        return m;

}

fc1735 发表于 2016-10-29 23:45:43

本帖最后由 fc1735 于 2016-10-29 23:47 编辑

fc1735 发表于 2016-10-29 23:28
抱歉没看清楚

其实是在S1E22的课后作业有一题一直没办法实现,才到处尝试是不是有什么地方是 ...

我看到了,是同一个问题,那没事了,一定是最近太累了... 我把帖设成已解决吧,感谢大神的帮助{:10_254:}{:10_254:}

xiaoshuai666 发表于 2016-10-30 11:37:21

fc1735 发表于 2016-10-29 23:45
我看到了,是同一个问题,那没事了,一定是最近太累了... 我把帖设成已解决吧,感谢大神的帮助{:10_254 ...


#include <stdio.h>

int main()
{
      char a;
      char* b = a;
      *b++='Y';
      *b++='O';
      *b++='U';
      *b++='\0';
      printf("%s",b);赋完值后,指针b已经指到了末尾,并不是从头开始指的,把这句改成printf("%s",a);
      return 0;


}

谦虚求学 发表于 2016-11-1 14:13:07

{:5_91:}
页: [1]
查看完整版本: 利用指针赋值的问题