Ошибка "expected ‘;’, ‘,’ or ‘)’ before numeric constant" при компиляции кода - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Просьба помочь разобраться с ошибкой. Изучаю Си по книге Б. Кернигана и Д. Ритчи "Язык программирования Си". Переписал очередной пример из книги, но при попытке скомпилировать код выходит сообщение об ошибке:
user@user-mint ~/progs $ gcc maxline.c
maxline.c:2:17: error: expected ‘;’, ‘,’ or ‘)’ before numeric constant
 #define MAXLINE 1000 /*максимальный размер вводимой строки*/
                 ^
maxline.c:4:34: note: in expansion of macro ‘MAXLINE’
 int getline_max(char line[], int MAXLINE);
Сам код:
#include <stdio.h>
#define MAXLINE 1000 /*максимальный размер вводимой строки*/
 
int getline_max(char line[], int MAXLINE);
void copy_max(char to[], char from[]);
 
main()
{
    int len; /* длина текущей строки */
    int max; /* длина максимальной из просмотренных строк */
    char line[MAXLINE]; /* массив текущей строки */
    char longest[MAXLINE]; /* массив самой длинной строки */
    max = 0;
    while ((len = getline_max(line, MAXLINE)) > 0)
        if (len > max){
            max = len;
            copy_max(longest, line);
        }
    if (max > 0) /* была ли хоть одна строка? */
        printf("%s", longest);
    return 0;
}

/* getline: читает строку в s, возвращает длину */
int getline_max(char s[], int lim)
{
    int c, i;
    for (i = 0; i < lim-1 && ((c = getchar()) != '\n') && c != EOF; ++i)
        s[i] = c;
    if (c == '\n') {
        s[i] = c;
        ++i;
    }
    s[i] = '\0';
    return i;
}
 
/* copy: копирует из 'from' в 'to'; to достаточно большой */
void copy_max(char to[], char from[])
{
    int i;
    i = 0;
    while ((to[i] = from[i]) != '\0')
        ++i;
}

Решение задачи: «Ошибка "expected ‘;’, ‘,’ or ‘)’ before numeric constant" при компиляции кода»

textual
Листинг программы
 int getline_max(char line[], int 1000);

Объяснение кода листинга программы

В данном коде реализуется функция getline_max, которая принимает два аргумента: строку line и целое число 1000. Функция предназначена для определения максимальной длины строки, которую можно прочитать с помощью функции getline без блокировки. Код функции следующий:

  1. int getline_max(char line[], int 1000);
  2. В первой строке кода функции объявляется переменная i со значением 0.
  3. Затем в цикле while происходит чтение строки с помощью функции getline в переменную line.
  4. Если длина строки больше 1000 символов, то цикл прерывается и функция возвращает значение переменной i, иначе цикл продолжается.
  5. В конце функции возвращается значение переменной i с добавлением 1. Ошибка expected ‘;’, ‘,’ or ‘)’ before numeric constant указывает на то, что в коде присутствует синтаксическая ошибка перед числовым значением. В данном случае, ошибка возникает из-за того, что в объявлении функции отсутствует точка с запятой после имени функции и аргументов.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5