鱼C论坛

 找回密码
 立即注册
查看: 1683|回复: 5

利用指针赋值的问题

[复制链接]
发表于 2016-10-29 14:12:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

  1. #include <stdio.h>

  2. int main()
  3. {
  4.         char a[20];
  5.         char* b = a;
  6.         *b++='Y';
  7.         *b++='O';
  8.         *b++='U';
  9.         *b++='\0';
  10.         printf("%s",b);
  11.         return 0;


  12. }

复制代码



上边代码哪里出错了,不懂编译执行后为何不是想要的结果。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-10-29 19:07:55 | 显示全部楼层
你确定找不到哪里出了问题?

#include <stdio.h>

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


}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-29 23:28:23 | 显示全部楼层
抱歉没看清楚

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

实现strcpy函数的:

不知哪里出错


  1. #include<stdio.h>
  2. #define Max 100

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

  22. }

  23. int strcmp_n(char* i,char* j,int k)
  24. {
  25.         int m=1;
  26.         while ((*i==*j++)&& k--&& *i)
  27.         {
  28.                 if (*i++<0)
  29.                 {
  30.                         if (*i!=*j) goto ret;
  31.                         if (*(i+1)!=*(j+1)) goto ret;
  32.                         i+=2;
  33.                         j+=2;
  34.                 }
  35.                 m++;
  36.         }
  37.         if (k==-1||*i == 0) return (1-m);
  38. ret:        j-=2;
  39.         if (*j<0)
  40.         {
  41.                 j-=2;
  42.                 *(i+100)=*j++;
  43.                 *(i+101)=*j++;
  44.                 *(i+102)=*j;
  45.                 *(i+103)='\0';
  46.         }
  47.         else
  48.         {
  49.                 *(i+100)=*j;
  50.                 *(i+101)='\0';

  51.         }
  52.        
  53.         return m;

  54. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-29 23:45:43 | 显示全部楼层
本帖最后由 fc1735 于 2016-10-29 23:47 编辑
fc1735 发表于 2016-10-29 23:28
抱歉没看清楚

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


我看到了,是同一个问题,那没事了,一定是最近太累了... 我把帖设成已解决吧,感谢大神的帮助
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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


#include <stdio.h>

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


}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-1 14:13:07 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-19 08:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表