我刚开始使用 C,我为初学者准备了以下代码块:
#include <stdio.h>
#include <stdlib.h>
int main() {
printf(' /\n');
printf(' /\n');
printf(' /\n');
printf(' /\n');
printf(' /\n');
printf('/\n');
return 0;
}
我正在使用代码块来构建和运行它。它打印出 Segmentation Fault, core dumped
。编辑器使用默认的 gcc 编译器。
代码有什么问题?
答案 0 :(得分:2)
您使用单引号调用 bool go_next(xmlNode n, int num) {
for(; num; --num) {
if(n==NULL) return false;
n = n->next;
}
return true;
}
而不是双引号。它会将前几个字符转换为整数,并将该整数转换为指针并访问它所指向的任何地方作为格式字符串,这很可能尚未映射,因此出现分段错误。
使用双引号。
正如 Ed Heal 所提到的,总是在启用警告的情况下进行编译。 C 不像其他语言。警告通常是非常严重的问题。
答案 1 :(得分:2)
对字符串使用双引号:
int main() {
printf(" /\n");
printf(" /\n");
printf(" /\n");
printf(" /\n");
printf(" /\n");
printf("/\n");
return 0;
}