帮助理解一下代码?

Sylix 2002-09-17 11:24:07
static char *days[] =
{ "su", "mo", "tu", "we", "th", "fr", "sa", "wk", "any", "al" };

#ifdef DEBUG
# define xprintf if (1) printf
#else
# define xprintf if (0) printf
#endif

static int strcode (char **str)
{
int i, l;

xprintf("strcode %s called\n", *str);

for (i = 0; i < 10; i++) {
l = strlen(days[i]);
if (l > strlen(*str))
continue;
if (strncmp(*str, days[i], l) == 0) {
*str += l;
break;
}
}
xprintf("strcode result %d\n", i);


return (i >= 10) ? -1 : i;

}

//哪位高人能够解释一下代码?
...全文
31 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
starsoft007 2002-09-17
  • 打赏
  • 举报
回复
crm2000(浏览器) 说的很正确,就是判断一个传进来的字符串的头部是否
含有days数组里的内容,如果有,则返回它所在的位置。如果没有则返回一个负值。
另外,程序的开头根据条件定义了一个xprintf的宏,意思是说,如果当前的状态
实在DEBUG状态的话,则打印这些信息,如果不是,则不打印这些信息。
crm2000 2002-09-17
  • 打赏
  • 举报
回复
就是判断days组里的元素是否在*str的头部,如果在就返回该days元素位置,否则返回一个负数。例如mo在monday的头部.

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧