| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 444 人关注过本帖
标题:程序很简单,但是错的很神奇。错的很奇葩。
只看楼主 加入收藏
StarFall
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:193
专家分:553
注 册:2012-10-1
结帖率:100%
收藏
 问题点数:0 回复次数:6 
程序很简单,但是错的很神奇。错的很奇葩。
代码如下:
#include <stdio.h>
int main(void)
{
    int i;
    char *p,c[20];
    for(int j=0;(c[j]=getchar())!='\n';j++);
    p=c;
    for(i=0;*(p+i)!='\0';i++)
    ;
    printf("%d \n",i);
   
    return 0;
}


程序目的是不用strlen测出输入字符的长度, 我用scanf("%s",c);成功实现, 不过换成那个第六行的for语句后不管输入什么最后i输出都是23.。。这是为什么呢- -
 这次真迷茫了。。
搜索更多相关主题的帖子: return include 
2012-11-10 22:03
StarFall
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:193
专家分:553
注 册:2012-10-1
收藏
得分:0 
已解决。。
第八行改成
 for(i=0;*(p+i)!='\n';i++)
就成功了- -  

去追寻更高的技术领域。永不停止。
2012-11-10 22:06
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
回复 2楼 StarFall
都有j了,为啥还要再用个for循环呢

总有那身价贱的人给作业贴回复完整的代码
2012-11-10 22:19
fu2751653
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:38
专家分:100
注 册:2011-4-11
收藏
得分:0 
目测也多了个;啊
2012-11-11 00:00
StarFall
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:193
专家分:553
注 册:2012-10-1
收藏
得分:0 
以下是引用embed_xuel在2012-11-10 22:19:52的发言:都有j了,为啥还要再用个for循环呢

因为题目要求用指针。。

去追寻更高的技术领域。永不停止。
2012-11-11 06:21
StarFall
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:193
专家分:553
注 册:2012-10-1
收藏
得分:0 
以下是引用fu2751653在2012-11-11 00:00:02的发言:
目测也多了个;啊


没有吧 两个for设计的就是空的。都在括号里执行了。

去追寻更高的技术领域。永不停止。
2012-11-11 06:23
Glost
Rank: 2
来 自:湖北
等 级:论坛游民
帖 子:54
专家分:48
注 册:2010-10-5
收藏
得分:0 
字符数组和字符串的区别,数组末尾可以不加‘\0’,字符串后最后一定是‘\0’,
字符数组后面存储的什么内容就不知道了,可能会大于数组的长度,所以不能以'\0'作为判断条件结束的标志,
额 ,以上我的理解......
收到的鲜花
  • StarFall2012-11-11 20:29 送鲜花  3朵   附言:我很赞同

只有一条路不能选择—那就是放弃的路;只有一条路不能拒绝—那就是成长的路。
2012-11-11 08:22
快速回复:程序很简单,但是错的很神奇。错的很奇葩。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016579 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved