void word(char *p)
{
int begin,end,i = 0;
for(begin=0; isspace( *(p+begin) ) ;begin++) continue;
for(end=begin; !isspace( *(p+end) ) ;end++) continue;
*(p+end) = '\0';
for(; *(p + begin) != '\0'; p++)
*p = *(p + begin);
*p = '\0';
}
读取输入行里的第一个单词到数组,并丢掉该行中的其他的字符,单词是一串字符,其中不包含空格,制表符和换行符。
最后一行*p = '\0'; 什么意思,为什么去掉了还会输出?*(p+end) = '\0';这句加上了不是不会继续输出了吗。
坑爹呢?这个地球人都知道。
追答*(p+end) =’\0‘是给下一步(往前移单词)定一个终点罢了。*p = '\0'才是给字符串设终点。
另外提一句这段代码可读性不怎么好,初学者最好不要学习用这样的方式编程。下面这段程序更加规范美观些。
void word(char *p)
{
char * runner = p;
while(isspace(*runner))
runner++;
while(isspace(*runner)){
*p = *runner;
p++;
runner++;
}
*p = '\0';
}
无语,别捣乱好不好。。。。
追答真没有捣乱啊 你去掉那句,然后直接运行一下看看不就知道结果了啊。
不懂可以原谅,说捣乱就不能原谅了
如果没有他就会出现乱码。这句话很像捣乱的,不好意思!