scanf создает segfault на линии scanf - PullRequest
0 голосов
/ 20 ноября 2018
#include <stdio.h>

int main() {
    int n;
    scanf("%d", &n);
    printf(n);
    return 0;
}

Это код, который у меня есть, и я настолько ошарашен, что, возможно, упускаю из-за очень простой ошибки. Это segfaults на линии scanf. Как бы я решил эту проблему?

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Использование printf(), как показано ниже:

printf("%d", n);

Возможно, вы допустили ошибку в code перед использованием scanf. Например, это может произойти, если вы скопируете строку в неинициализированном массиве, которая нигде не указывает в памяти.

0 голосов
/ 20 ноября 2018

Ошибка сегментации не в scanf, а в printf.Как упомянул @TypeIA в разделе комментариев, это связано с тем, что printf ожидает указатель на строку формата, а не само целое число.Чтобы сделать это, то, как вы используете спецификатор формата %d, принимая целое число в качестве ввода через scanf, вам нужно использовать то же самое при печати, используя printf., То есть

printf("%d",n);Обратите внимание на %d перед n.

ОБНОВЛЕННЫЙ КОД:

#include <stdio.h>

int main() {
    int n;
    scanf("%d", &n);
    printf("%d",n);
    return 0;
}
...