简单的 Hello World 示例出现分段错误?

时间:2020-12-23 18:10:55

标签: c

我刚开始使用 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 编译器。

代码有什么问题?

2 个答案:

答案 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;
}