| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 510 人关注过本帖
标题:绝对让你抓狂的结果.自己运行下就纠结了!
只看楼主 加入收藏
C梦天下
Rank: 2
等 级:论坛游民
帖 子:53
专家分:38
注 册:2011-4-10
结帖率:57.14%
收藏
已结贴  问题点数:20 回复次数:6 
绝对让你抓狂的结果.自己运行下就纠结了!
程序代码:
#include <stdio.h>
#include "string.h"

int main(void)
{
    int n=0;
    char y[ ]="this_is_an_example.";
    char *s=&y[6];
    while(*s){
        n++;
        s++;
    }

 printf("%d\n",n);

 return 0;

}
运行下 ,结果是13
再运行下面这个
程序代码:
#include <stdio.h>
#include "string.h"

int fun(char *s)
{
    int n=0;
    while(*s){ n++;s++ ;}
    return n ;
}
int main(void)
{
    char y[ ]="this is_an_example。";  //注意这里的句号和上面的句号不同,为什么句号要分两次运行 ! 求大神指教
    printf("%d\n",fun(&y[6]));
    return 0;
}

2011-10-14 16:15
唯我独魔
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:176
专家分:782
注 册:2011-4-13
收藏
得分:5 
因为中文句号是要占两个字节的,属于中文范畴了吧
2011-10-14 16:18
lantian8786
Rank: 1
等 级:新手上路
帖 子:3
专家分:5
注 册:2011-10-14
收藏
得分:5 
看错了。不好意思。

[ 本帖最后由 lantian8786 于 2011-10-14 16:22 编辑 ]
2011-10-14 16:19
C梦天下
Rank: 2
等 级:论坛游民
帖 子:53
专家分:38
注 册:2011-4-10
收藏
得分:0 
回复 2楼 唯我独魔
所以,n++,s++还要进行一次, 这样啊, 终于得到结果了
2011-10-14 16:19
唯我独魔
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:176
专家分:782
注 册:2011-4-13
收藏
得分:0 
回复 4楼 C梦天下
恩,是的,字符指针在中文句号这里要移动再次。。。
2011-10-14 16:21
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:5 
回复 楼主 C梦天下
不用抓狂,不用纠结,遇到了记住就好了

总有那身价贱的人给作业贴回复完整的代码
2011-10-14 16:26
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
嘿嘿,未必。纠结的还在后头呢。

授人以渔,不授人以鱼。
2011-10-14 16:52
快速回复:绝对让你抓狂的结果.自己运行下就纠结了!
数据加载中...
 
   



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

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