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]='