鱼C论坛

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

利用指针赋值的问题

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

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

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

x
本帖最后由 fc1735 于 2016-10-29 14:28 编辑
#include <stdio.h>

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


}


上边代码哪里出错了,不懂编译执行后为何不是想要的结果。
想知道小甲鱼最近在做啥?请访问 -> 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函数的:

不知哪里出错
#include<stdio.h>
#define Max 100

int main()
{
        char a[(Max+4)];
        char b[Max];
        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;

}
想知道小甲鱼最近在做啥?请访问 -> 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-11-27 15:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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