Насчет ошибки expected ',' or '.' before numeric constant в K&R - C (СИ)
Формулировка задачи:
учу по K&R потихоньку, для компиляции использую QT (Qt Creator 3.2.1 (opensource) Based on Qt 5.3.2 (GCC 4.6.1, 64 bit))
разбираясь с задачей 1.9 перепечатал ее в оригинале, но программа отказывается компилироваться.
Ознакомившись с форумом я понял что местные говорят что КОНСТАНТА НЕ МОЖЕТ БЫТЬ ИДЕНТИФИКАТОРОМ ПАРАМЕТРА функции, странное расхождение с Ричи хочу спросить, а почему тогда эта же константа идентификатор параметра переменных которые мы задаем в main? и почему Ричи предлогает именно такую конструкцию?
даже сделав как советуют камрады int getline (char line[], int); я получаю ошибку в 25 строке где уже объявляю функцию getline
#include <stdio.h> #define MAXLINE 256 //макс размер вводимой строки int getline (char line[], int); void copy (char to[], char from[]); //печать самой длинной строки main() { int len,max; // длины текущей строки и максимальной из просмотренных строк char line [MAXLINE]; // текущая строка char longest [MAXLINE]; // самая длинная строка max =0; while ((len = getline(line, MAXLINE)) > 0) if (len > max){ max = len; copy (longest, line); } if (max > 0) // была ли хоть одна строка? printf ("%s", longest);// если да то выводим ее return 0; } //функция getline читает строку в s и возвращает ее длину getline (char s[],int lim) { int c ,i; for (i = 0; i < lim-1 && (c = getchar()) != EOF && c != '\n'; ++i ) s[i] = c; if(c == '\n'){ s[i] = c; ++i; } s[i] = '\0'; return i; } // функция copy копирует из from в to void copy (char to[], char from[]) { int i = 0; while ((to[i] = from[i]) != '\0') ++i; }
Решение задачи: «Насчет ошибки expected ',' or '.' before numeric constant в K&R»
textual
Листинг программы
#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; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д