【发布时间】:2015-04-15 21:44:54
【问题描述】:
所以我遇到了这个递归函数调用的问题...... 我正在尝试编写一个函数来检查我的结构中的每个字符串是否遵循字母顺序,如果是,它将返回 1,如果不是,它将返回 0。
我不断收到总线 10 错误,我尝试将打印语句/找不到我的错误在哪里。 任何人都可以帮忙吗? 谢谢。
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
typedef struct string_list string_list;
struct string_list {
char *val;
string_list *next;
};
int sl_sorted_asc(string_list *ss) {
int string_c = strcmp(ss->val, ss->next->val);
if (string_c >= 0) {
if (ss->next != NULL) {
sl_sorted_asc(ss->next);
}
else {
return 1;
}
}
else {
return 0;
}
return 1;
}
int main() {
string_list hi;
hi.val = "Leeho";
hi.next->val = "Ferris";
hi.next->next->val = "Donny";
printf("%d\n", sl_sorted_asc(&hi));
}
【问题讨论】:
-
您正在通过
main()的第三行和第四行的无效指针写入。 -
建议不要用诸如:'typedef struct string_list string_list;'之类的废话来混淆代码、编译器名称空间等相反,在代码中需要引用结构名称的每个点,简单地说“struct string_list”
-
关于“编码风格”:为了那些必须阅读/调试/修改/维护您的代码的人(包括您自己)强烈建议不要使用“乔治亚”风格的大括号(眼睛效果很好垂直方向,但不是当它必须不断地向左/向右跳转以找到匹配的大括号时)和一致的缩进量(当使用非等宽字体时,2个空格不足以清楚地显示缩进。建议始终使用4个空格缩进)跨度>