在C中使用字符串时的分段错误

问题描述

我正在向我们的大学新生问一个问题,他们是C语言编码和字符串的新手。 我的以下代码由于分段错误而停止工作。

string setAge(string value) {
    if (!isInt(value)) {
        return INVALID_VALUE_TYPE;
    }
    string firstPart = substring(sentJson,strlen(sentJson) - strlen(strstr(sentJson,"\"age\": ")));
    string thirdPart = strstr(sentJson,",\n\"belowLegalAge\": ");
    string stringBuilder[] = {"\"age\": ",value};
    string secondPart = concatStrings(stringBuilder,2);
    strcat(firstPart,secondPart);
    strcat(firstPart,thirdPart);
    sentJson = firstPart;
    return SUCCESSFUL;
}

stringtypedef char* string;定义在顶部的同时,功能substringconcatstrings如下:

string substring(fixed_string str,int begin,int end) {
    string substring = makeString(end - begin + 1);
    string copy = copyString(str);
    strncpy(substring,copy + begin,end - begin);
    free(copy);
    return substring;
}

string concatStrings(string* strings,int length) {
    string result = newString();
    for (int i = 0; i < length; ++i) {
        strcat(result,strings[i]);
        printf("%s\n",result);
    }
    return result;
}

fixed_string也是typedef char const* fixed_string;函数makeStringcopyStringnewString如下:

string makeString(int size) {
    return (char*) calloc(size,sizeof(char));
}

string newString() {
    return makeString(250);
}

string copyString(fixed_string str) {
    string copyStr = makeString(strlen(str) + 1);
    strcpy(copyStr,str);
    return copyStr;
}

有人知道为什么它不起作用,我得到Signal = SIGSEGV (Segmentation fault)吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)