Подтвердить что ты не робот

Что такое ошибка сегментации (ядро сбрасывается)?

Я пытаюсь написать C-программу в linux с sqrt аргумента, здесь код:

#include<stdlib.h>
#include<stdio.h>
#include<math.h>

int main(char *argv[]){
    float k;
    printf("this is consumer\n");
    k=(float)sqrt(atoi(argv[1]));
    printf("%s\n",k);
    return 0;
}

После ввода моего ввода в приглашении "shell > " gcc дает мне следующую ошибку:

Segmentation fault (core dumped)
4b9b3361

Ответ 1

"Ошибка сегментации" означает, что вы пытались получить доступ к памяти, к которой у вас нет доступа.

Первая проблема связана с вашими аргументами main. Функция main должна быть int main(int argc, char *argv[]), и вы должны проверить, что argc не менее 2 до доступа к argv[1].

Кроме того, поскольку вы передаете от float до printf (который, кстати, преобразуется в double при передаче на printf), вы должны использовать спецификатор формата %f, Спецификатор формата %s предназначен для строк ('\0' -терминированных массивов символов).