问题描述
我正在向我们的大学新生问一个问题,他们是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;
}
在string
被typedef char* string;
定义在顶部的同时,功能substring
和concatstrings
如下:
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;
,函数makeString
,copyString
和newString
如下:
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 (将#修改为@)