что такое segmentation fault (kernel сбрасывается)?

Я пытаюсь написать программу C в Linux, которая имеет sqrt аргумента. Вот код:

#include #include #include 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) 

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

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

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