免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1234 | 回复: 4
打印 上一主题 下一主题

Segementation fault.... [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-06-07 14:36 |只看该作者 |倒序浏览
my code is like this:
  1. #include <stdio.h>

  2. int strlen(char*);
  3. int strcmp(char*s1, char*s2);
  4. int main(int argc, char**argv){
  5.         char* s1;
  6.         char* s2;
  7.         int i,s1l,s2l;
  8.         if(argc!=3){
  9.                 printf("Input error!");
  10.                 return 0;
  11.         }
  12.         s1l=strlen(argv[1]);
  13.         s2l=strlen(argv[2]);
  14.         printf("The lenght is %d and %d \n", s1l, s2l);
  15.         s1=argv[1];
  16.         s2=argv[2];
  17.         i=strcmp(s1,s2);
  18.         printf("the string is in %d", i);
  19.         return 0;
  20. }

  21. int strcmp(char*s1, char*s2){
  22.         int mark;
  23.         for(int i=0; i<=s2l;i++){
  24.                 mark=0;
  25.                 for(int j=0;j<=s1l;j++)
  26.                 if(s1[j]==s2[i+j])mark++;
  27.                 if(mark==s1l)return (i-s1l);
  28.         }
  29.         return -1;
  30. }

  31. int strlen(char*s){
  32.         int n;
  33.         for(n=0;s[n]!='\0';n++){}
  34.         return n;
  35. }
复制代码


I try to compare whether there's a sub string in the other one

but when I go to compile it by Gcc

I got ok

and when I run it, I got a "segementation fault!"


Some boby help me please

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
2 [报告]
发表于 2006-06-07 15:26 |只看该作者
#include <stdio.h>

int strlen(char*);
int strcmp(char*s1, char*s2);
int main(int argc, char**argv){
        char* s1;
        char* s2;
        int i,s1l,s2l;
        if(argc!=3){
                printf("Input error!");
                return 0;
        }
        s1l=strlen(argv[1]);
        s2l=strlen(argv[2]);
        printf("The lenght is %d and %d \n", s1l, s2l);
        s1=argv[1];
        s2=argv[2];
        i=strcmp(s1,s2);
        printf("the string is in %d", i);
        return 0;
}

int strcmp(char*s1, char*s2){
        int mark;
        for(int i=0; i<=s2l;i++){
                mark=0;
                for(int j=0;j<=s1l;j++)
                if(s1[j]==s2[i+j])mark++;
                if(mark==s1l)return (i-s1l);
        }
        return -1;
}

int strlen(char*s){
        int n;
        for(n=0;s[n]!='\0';n++){}
        return n;
}


这样的代码编译不报错?

[ 本帖最后由 MMMIX 于 2006-6-10 20:18 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2006-06-07 15:49 |只看该作者
gcc -o test3 test3.c
test3.c: 在函数 ‘strcmp’ 中:
test3.c:25: 错误:在 C99 模式之外使用 ‘for’ 循环初始化声明
test3.c:25: 错误:‘s2l’ 未声明 (在此函数内第一次使用)
test3.c:25: 错误:(即使在一个函数内多次出现,每个未声明的标识符在其
test3.c:25: 错误:所在的函数内只报告一次。)
test3.c:27: 错误:在 C99 模式之外使用 ‘for’ 循环初始化声明
test3.c:27: 错误:‘s1l’ 未声明 (在此函数内第一次使用)

论坛徽章:
0
4 [报告]
发表于 2006-06-07 16:03 |只看该作者
收到,谢谢各位:)

论坛徽章:
0
5 [报告]
发表于 2006-06-08 13:11 |只看该作者
奇怪,这个程序也能编译成功,并有执行档产生?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP