В предоставленном вами коде есть несколько серьезных проблем. Если в лекции предлагается использовать gets()
, бросьте его в tra sh, вместо этого используйте fgets()
. Причину, по которой вы можете найти по этой ссылке:
Почему функция gets настолько опасна, что ее не следует использовать?
Кроме того, лекция кажется чтобы вы даже не научились правильно передавать параметры или правильно выводить значения переменных.
Я рекомендую вам прочитать хорошую C стартовую книгу, например, this . Список рекомендованных книг также можно найти здесь:
The Definitive C Книжное руководство и список
Чтобы сосредоточить внимание только на одной проблеме, вывод:
printf("There are %d digits in your string.");
Это использование printf()
неверно. Откуда взять значение, указанное в %d
? В спецификаторе формата %d
отсутствует соответствующий аргумент, который указывает на целочисленное значение или переменную int
, например:
int a = 10;
printf("a = %d",a);
%d
требуется соответствующий аргумент типа int
для фактической печати ценность. В противном случае поведение не определено .
Это должно во всех случаях давать диагностику c. Никогда не игнорируйте предупреждения компилятора.
Почему я всегда должен включать предупреждения компилятора?