| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1958 人关注过本帖
标题:访问违例(段异常)
只看楼主 加入收藏
youngpennyu
Rank: 2
等 级:论坛游民
帖 子:37
专家分:19
注 册:2011-6-13
收藏
得分:0 
回复 20楼 cosdos
dev-c++
2011-06-22 21:21
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
以下是引用youngpennyu在2011-6-22 21:21:18的发言:

dev-c++


我也用这个。

代码注意风格。dev-C++ 可以自动对齐,设置下就能用了。要关掉智能TAB。

[ 本帖最后由 cosdos 于 2011-6-22 21:32 编辑 ]

—>〉Sun〈<—
2011-06-22 21:23
youngpennyu
Rank: 2
等 级:论坛游民
帖 子:37
专家分:19
注 册:2011-6-13
收藏
得分:0 
回复 22楼 cosdos
谢谢提醒~~
2011-06-22 21:26
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
我在 5 楼已经说了,段异常是因为在读取字符串的时候覆盖了 fp 的值引起的。
那么什么时候会覆盖 fp 的值呢?
楼主运行这个代码,然后自己思考一下大概就明白了:
程序代码:
#include<stdio.h>
#include<stdlib.h>

#define N 1

int main() {
    FILE *fp;
    char str[N], name[N], s[N], year[N], wname[N], wyear[N], m[N];
    printf("%-20s: %d\n%-20s: %d\n%-20s: %d\n%-20s: %d\n%-20s: %d\n%-20s: %d\n%-20s: %d\n%-20s: %d\n",
        "Address of fp", &fp,
        "Address of str", str,
        "Address of name", name,
        "Address of s:", s,
        "Address of year", year,
        "Address of wname", wname,
        "Address of wyear", wyear,
        "Address of m", m);
    return 0;
}


[ 本帖最后由 voidx 于 2011-6-22 21:29 编辑 ]
2011-06-22 21:27
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
回复 23楼 youngpennyu
要关掉智能TAB。

图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 cosdos 于 2011-6-22 21:32 编辑 ]

—>〉Sun〈<—
2011-06-22 21:28
youngpennyu
Rank: 2
等 级:论坛游民
帖 子:37
专家分:19
注 册:2011-6-13
收藏
得分:0 
回复 25楼 cosdos
好人~~~
2011-06-22 21:33
youngpennyu
Rank: 2
等 级:论坛游民
帖 子:37
专家分:19
注 册:2011-6-13
收藏
得分:0 
回复 24楼 voidx
不会发图~~
Address
fp               2293620
str              2293619
name             2293618
s                2293617
year             .....
...
str 过长而且地址相差1,就很有可能覆盖fp~~
2011-06-22 21:42
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
回复 27楼 youngpennyu
正解。
任何一个字符串的长度超过他的起始地址与 fp 的地址的差 - 1 就会导致段异常
2011-06-22 21:46
快速回复:访问违例(段异常)
数据加载中...
 
   



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

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