小编Cor*_*son的帖子

C - fgets segfault

我有以下代码:

int get_int(void) {
    char input[10];
    fgets(input, 10, stdin); // Segfault here
    return atoi(input);
}
Run Code Online (Sandbox Code Playgroud)

它给了我一个标记的段错误.我完全不知道问题是什么,因为我在不同的程序中有以下代码:

int main(void) {
    char card[17];
    printf("Number: ");
    fgets(card, 17, stdin);
    printf("%s\n", card_type(card));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它工作正常.我100%肯定它不是atoi上的segfaulting.

这是否可以被其他人重现,我使用GCC 4.4.5在Linux amd64上.它编译并输出没有警告.

由于它是被请求的,这里是调用get_int的代码:

void get_input(int *inputs) { // Stop cluttering up my main
    printf("M spotting F: ");
    inputs[0] = get_int();
    printf("F spotting M: ");
    inputs[1] = get_int();
    printf("F spotting F: ");
    inputs[2] = get_int();
    printf("M spotting M: ");
    inputs[3] = get_int();
}
Run Code Online (Sandbox Code Playgroud)

调用它的代码是:

int main(void) {
    int …
Run Code Online (Sandbox Code Playgroud)

c fgets segmentation-fault

5
推荐指数
1
解决办法
5837
查看次数

标签 统计

c ×1

fgets ×1

segmentation-fault ×1