2016-11-18 2 views
0

Я новичок в программировании C и работать через книгу под названием «Самоучитель C Программирование Сэма в один час в день»Слишком мало аргументов, чтобы функционировать вызов

Одна из программ тренировок в главе 2 дает мне ошибку Я слишком послушник, чтобы понять. Небольшая помощь и ясное объяснение без напыщенного сарказма были бы очень важны! Спасибо за ваше время и внимание.

Exercise Program

+2

'fgets (буфер);' -> 'fgets (буфер, буфер SizeOf, стандартный ввод);', '% d' ->'% zu' – BLUEPIXY

+2

Для будущих вопросов скопируйте/вставьте код и сообщения об ошибках в виде текста (с отступом на 4 столбца, чтобы он отформатировался правильно) вместо использования скриншота. Скриншоты могут быть трудными для чтения, и невозможно скопировать/вставить код примера, если кто-то хочет попробовать код локально. –

+0

Спасибо за совет. Я буду следовать этим инструкциям для публикации с этого момента. Я искренне ценю ваше время и внимание. Ура! –

ответ

0

ошибка говорит все: fgets() ожидает три аргумента. Вы даете ему это.

Так, назовет его так:

fgets(buffer, 256, stdin) 

буфера где вход должны быть сохранен, является размером буфера, STDIN представляет собой поток для чтения из.

Кроме того, use %lu вместо% d в качестве спецификатора формата для unsigned long.

Редактировать: Use the z modifier, как %zu для значения, возвращаемого strlen, который имеет типа size_t

+0

Большое спасибо! Я действительно ценю ваше время. Это сработало отлично. –

+1

[Как можно печатать переменную size_t с возможностью переноски с использованием семейства printf?] (Http://stackoverflow.com/questions/2524611/how-can-one-print-a-size-t-variable-portably-using-the -printf-family) – BLUEPIXY

+2

Нет, используйте '% zu' значение, возвращаемое' strlen', которое имеет тип 'size_t'. –

Смежные вопросы