代码写的少,搞不清边界和起始

 1     for(p = fmt; *p; p++)
 2     {
 3         if(*p != ‘%‘)
 4         {
 5             putchar(*p);
 6             continue;
 7         }
 8         i = 0;// 永远指向下一个字符,因为0时也没有字符,可能最终也是没有字符
 9         localfmt[i++]=‘%‘;                    // start local fmt
10         while( *(p+1) && !isalpha(*(p+1)) ) // p 只处理到当前字符 测试下一字符   ++p  测试 p+1
11                                             // i 处理到下一字符 从0开始添加 使用 i++
12             localfmt[i++]=*(++p);            // collect chars
13         localfmt[i++]=*(p+1);                // format letter
14         localfmt[i]=‘\0‘;
15
16         switch(*++p)                        // format letter
17         {
18
19         }
20     }

#include <stdio.h>
#include <ctype.h>
#include <stdarg.h>

void minprintf(char *fmt, ...)
{
    va_list ap;
    char *p, *sval;
    int ival,i;
    double dval;
    char localfmt[100];

    va_start(ap, fmt);
    for(p = fmt; *p; p++)
    {
        if(*p != ‘%‘)
        {
            putchar(*p);
            continue;
        }
        i = 0;
        localfmt[i++]=‘%‘;
        while( *(p+1) && !isalpha(*(p+1)) )
            localfmt[i++]=*(++p);
        localfmt[i++]=*(p+1);
        localfmt[i]=‘\0‘;

        switch(*++p)
        {
            case ‘d‘:
                ival = va_arg(ap,int);
                printf(localfmt,ival);
                break;
            case ‘f‘:
                dval = va_arg(ap,double);
                printf(localfmt,dval);
                break;
            case ‘s‘:
                for(sval = va_arg(ap,char *); *sval; sval++)
                    putchar(*sval);
                break;
            default:
                putchar(*p);
                break;
        }
    }
    va_end(ap);
}

int main()
{
    minprintf("% d",10);
    return 0;
}

完整代码

对于开始存数的使用 i++ 始终指向要写入的位置(已有字符的下一位置),因为可能什么都不写,最后处理到i这个空位置。

对于已有的测试使用下一个字符(p+1),然后先移指针在处理当前字符,++p。

时间: 2024-08-15 05:08:16

代码写的少,搞不清边界和起始的相关文章

引擎渲染速度测试--我js代码写得少你不要骗我

上一张图,很多人都看过的 地址:http://aui.github.io/artTemplate/test/test-speed.html 这个地址是在看artTemplate的时候看到的,很早都看过但是没去研究为什么artTemplate为什么那么快,其他的为什么那么慢.最近看underscore的源码,先看了template部分,再想起这张图,我就不服了.凭神马underscore那么慢,基本上就是倒数第二的成绩.我代码写得少,上面那个图是在骗我吗!!! 于是看了下作者的测试代码,也在作者那

你加班太多是因为你的代码写的烂

今天看见一篇不错的文章,给大家分享一下 作为一名程序员,我渴望我加入的应该要是一支"30%的时间在写代码,而70%的时间在喝着咖啡讨论着如何将产品做好"的团队.我觉得软件工作应该成为一项技术和艺术融合的高智力活动,我们的项目经理应该是一个高度理解质量.范围和进度客观规律的明白人,"高效工作,快乐生活"才应该是我们的座右铭. 可现实情况却是,团队在一边超负荷的做着需求,一边改着没完没了的Bug.过点前夕,项目经理熬着通红通红的眼睛盯着我们整晚整晚的加班,质量专员一遍一

牢骚 - 你代码写得丑,又不肯用好一点的IDE,这让我很为难啊。

又有人问我代码错误,发过来就是一篇巨丑无比的代码,先不说左大括号转行还和代码写在同一行的谭浩强风格,你这狗啃的一样的缩进是闹哪样!粘进VS2015里面,自动格式化,瞬间赏心悦目,编译错误出了5行,我直接粘给他,他说这些都没有错啊,然后发给了我一个VC6编译错误的截图,错误足是VS2015的三倍多,我定睛一看,MB,少写了一个右大括号,怪不得这么多莫名其妙的错,改过来之后,又是未初始化变量又是scanf少参数,反正都是VC6查不出的错呗,直接粘给他,免得之后运行出错又过来问我,我才不管这些由于用了

试着品评:远离你的电脑,代码写得更好!

其实写代码,只是为了砌砖块,这和楼怎么设计真的没什么关系. 而开发工具,就是各种吊装设备,搅拌设备,砌筑工具,这也和楼房怎么设计没什么关系. 盖楼房,上来就动这些设备,处理那些材料,这只能是砌猪圈! 盖楼房,一定得先进行地质堪测,结构设计,外观设计,布局设计..., 这一切设计都是在纸上或三维设计软件中完成,与动手盖房子没啥关系. 我想作者就是要说明一个问题:架构设计和软件开发是两个阶段的事情! 如果你有足够的开发经验,那么设计完全可以不动工具,就完成一切. 当然了,有些并不掌握的技术,一定需要

程序员面试京东前端,现场JavaScript代码写出魔方特效

程序员面试京东前端,现场JS代码写出魔方特效,成功搞定20K月薪 今天小编我逛论坛,看到了一位程序员小伙子,因为是有了两年工作经验,然后去京东面试前端岗,一面二面轻松就过了,到了技术面这一块,小伙干脆就直接用JavaScript写了一个魔方特效,最终通过了面试,试用期12K,转正20K的工资水平,这特效看的小编也服气,主要是脑洞大,所以我也COPY了一份源码,分享给头条上的小伙伴学习. 完成之后的效果图如图所示: 完整源码分享给大家: 想要更多项目源码拿来练练手的可以复制下方群号→ web前端/

★★★★★★★★★★★★★★★★★★啊好烦,写代码写的要吐血了哦

全数字好域名疯狂抢99%成功率|域名注册|已备案未注册|到期删除过期域名查询|-尽在(爱酷名_ikuMing.com) 啊好烦,写代码写的要吐血了哦 写代码真的好痛苦啊,快坚持不下去了,谁来拯救我一下哦

js280行代码写2048

2048 原作者就是用Js写的,一直想尝试,但久久未动手. 昨天教学生学习JS代码.不妨就做个有趣的游戏好了.2048这么火,是一个不错的选择. 思路: 1. 数组 ,2维数组4x4 2. 移动算法,移动后有数字的对齐,无数字(我用的0,但不显示)补齐. 移动前 移动后(注意程序合并了第一行2个2,并产生了新的2) 移动算法分2步: 第一步骤:移动 第二步骤:合并 移动代码参考: function left(t,i) { var j; var len = t[i].length; for (j=

ios 用纯代码写程序的时候,navigationController的导航栏的设置

我们都知道,如果用storyBoard设置导航栏很容易,点击左右item的时候,进入下一个界面,导航栏的颜色是跟上一层的是一样的,用纯代码写的时候,可以在当前控制器,和从当前控制器进入到下一个控制器都用代码实现对导航栏的控制,但是,每次都写代码设置,很麻烦,所以,可以这样: 创建一个MainTabBarController的类,在Appdelegate.m里面完成: - (BOOL)application:(UIApplication *)application didFinishLaunchi

当程序员说“这代码写的可真烂”,他们的意思是“这烂代码不是我写的”。而当他们说这段代码有些“小问题”时,很可能这代码是他们自己写的

英文原文:What Programmers Say vs. What They Mean 你是否听到过同事说“这段代码不言自明”?你的同事的这句话的实际意思是这段代码不需要写注释. 你也许注意到了,很多时候,程序员所说的话的字面意思和其真实的意思是完全不同的.不用惊异,下面你将很快知道这些暧昧的短语和其深层次的意思都是什么. 最近 Imgur 上出现了一张图片,里面列举的程序员的一些专业术语和其含义,它能很好的帮助你理解这些话的真实意思.这里是对其中的精华进行的总结. 典型的程序员之间的对话 当