首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对比两个字符导致超时:被监视的命令转储核心

对比两个字符导致超时:被监视的命令转储核心
EN

Stack Overflow用户
提问于 2018-12-15 21:03:21
回答 1查看 1.2K关注 0票数 0

我试图通过递归函数找到两个char数组之间的距离。首先看看我的run.c和lab_2__copy.h

run.c

代码语言:javascript
复制
#include <stdio.h>
#include "lab_2_0.h"
const char characters[10]={'A','N','E','X','A','M','P','L','E','!'};


int main(){

    find_distance_between_strings(characters);
    return 0;
}

lab_2_o_copy.h

代码语言:javascript
复制
#ifndef _LAB_2_0_
#define _LAB_2_0_

const char characters[10];

char read_character();
void find_distance_between_strings(char b[]);
void helper(char a[],char b[],int i,int c);


#endif

和lab_2_0.c,其中包括我的函数的实现

代码语言:javascript
复制
#include <stdio.h>
#include "lab_2_0.h"

char read_character(){
    char data;
    scanf(" %c",&data);
    return data;
}

/* TASK SOLUTIONS */

int helper(char a[],char b[],int i,int c)
{
 if(i<10)
 {
     a[i]=read_character();
     if(a[i]!=b[i])
     {
         c++;
     }
 }
}
void find_distance_between_strings(char b[])
{
    char a[10];
    helper(a,b,0,0);


}

我知道我的实现还没有完成,似乎包含ai!=bi的if语句会导致SEGV,但我不确定,因为当我删除c递增的操作时,代码不会导致SEGV或被监视的命令倒置核心,我不知道我的错误是什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-15 21:21:12

问题是"lab_2_0.h“文件中的助手函数原型与"lab_2_0.c”文件中的函数定义原型不匹配。

它应当是:

代码语言:javascript
复制
void helper(char a[],char b[],int i,int c);

无论是在文件中还是

代码语言:javascript
复制
int helper(char a[],char b[],int i,int c);

接下来,如果你选择

代码语言:javascript
复制
int helper(char a[],char b[],int i,int c);

您需要在这个函数中提供一个返回。

下一点是,您的characters10数组是const。调用find_distance_between_strings函数时,将删除此const限定符。这可能会导致错误,因为您不允许修改const变量。

要修复它,请将find_distance_between_strings的原型更改为以下内容(在.h和.c文件中):

代码语言:javascript
复制
find_distance_between_strings(const char b[]);

为了进一步了解这一点,您需要进一步将helper函数原型更改为以下内容(在.h和.c文件中):

代码语言:javascript
复制
int helper(char a[], const char b[],int i, int c);

最后一件事是,您的程序中没有当前的递归。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53797230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档