
C语言 简单的练习题
voidword(char*p){intbegin,end,i=0;for(begin=0;isspace(*(p+begin));begin++)continue;fo...
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';这句加上了不是不会继续输出了吗。 展开
{
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 = '\0';可以省去,因为此时的*p与先前的*(p+end)说的应是同一位置的值,前面已将其赋值为'\0'了,但没有向前移位,所以要把移位的最后一位也设置为'\0',也就是说,你的理解只对了一半儿!
如果缺少最后一行的*p = '\0';会有一小段重复的子串.
如果缺少最后一行的*p = '\0';会有一小段重复的子串.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
重新移动了字符串结束的位置而已,举例说明:
源字符串src为" flyhorse loves 小梅"
1,执行到*(p+end)='\0'的时候,src就是" flyhorse"了;
2,执行了最后的*p='\0',src就是"flyhorse"了,否则src就是"flyhorse ";
(p指针的重定位操作就在p++,p一旦移位,字符串结束位置也需要移位)
源字符串src为" flyhorse loves 小梅"
1,执行到*(p+end)='\0'的时候,src就是" flyhorse"了;
2,执行了最后的*p='\0',src就是"flyhorse"了,否则src就是"flyhorse ";
(p指针的重定位操作就在p++,p一旦移位,字符串结束位置也需要移位)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
'\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';
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不是只读第一个单词么 ? 第1个单词和第2个单词之间不是用空格键隔开的么?所以只要读到空格键就行了,其他的都扔掉。。。。
char *p=&string;
if( *p !=‘ ’)
{
string str+=*p;
p++;
}
char *p=&string;
if( *p !=‘ ’)
{
string str+=*p;
p++;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
每个字符串都是\0结束了 如果没有他就会出现乱码
更多追问追答
追问
无语,别捣乱好不好。。。。
追答
真没有捣乱啊 你去掉那句,然后直接运行一下看看不就知道结果了啊。
不懂可以原谅,说捣乱就不能原谅了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询