Где скачать компилятор для С, а не C++? - C (СИ)
Формулировка задачи:
Я понимаю, что в разделе С++ есть тема, где изложен список бесплатных IDE для С/С++ программы.
Эти два языка очень схожы, но на моем VS2012, VS 2013 ULTIMATE, CODEBLOCKS компилятор не компилирует даже простейшие проги написанные на С, а проги С++ все компилируются.
Вопрос, кто знает где я могу скачать компилятор для С, а не С++?
с уважением,
Человек, который уже целую неделю не может С компилятор скачать.
Новичок Программист.
Решение задачи: «Где скачать компилятор для С, а не C++?»
textual
Листинг программы
#include <stdio.h>
#include <string. h>
#define MAXLINES 5000 /* максимальное число строк */
char *lineptr[MAXLINES]; /* указатели на строки */
int readlines(char *lineptr[], int nlines);
void wntelines(char *lineptr[], int nlines);
void qsort(char *lineptr[], int left, int right);
/* сортировка строк */
int main()
{
int nlines; /* количество прочитанных строк */
if ((nlines = readlinesdineptr, MAXLINES)) >= 0) {
qsort(lineptr, 0, nlines - 1);
writelines(lineptr, nlines);
return 0;
}
else {
printf("ошибка: слишком много строк\п");
return 1;
}
}
#define MAXLEN 1000 /* максимальная длина строки */
int getline(char *, int);
char *alloc(int);
/* readlines: чтение строк */
int readlines(char *lineptr[], int maxlines)
{
int len, nlines;
char *p, line[MAXLEN];
nlines = 0;
while ((len = getline(line, MAXLEN)) > 0)
if (nlines >= maxlines I !(p = alloc(len)) == NULL)
return -1;
else {
line[len - 1] = '\0'; /* убираем символ \n */
strcpy(p, line);
lineptr[nlines++] = p;
}
return nlines;
/* writelines: печать строк */
void writelines(char *lineptr[], int nlines)
{
int i;
for (i = 0; i < nlines; i++)
printf("%s\n", lineptr[i]);
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы: stdio.h и string.h
- Определяются две константы: MAXLINES и MAXLEN, которые задают максимальное количество строк и максимальную длину строки соответственно.
- Создаются две функции: readlines и wntelines. Функция readlines отвечает за чтение строк из файла или стандартного ввода, а функция wntelines - за вывод строк на экран.
- В функции main создается переменная nlines, которая инициализируется значением, равным количеству прочитанных строк.
- Если количество строк не превышает максимальное значение, то происходит сортировка массива строк с помощью функции qsort.
- Затем происходит вывод отсортированных строк на экран с помощью функции wntelines.
- Если же количество строк превышает максимальное значение, то выводится сообщение об ошибке и возвращается значение 1.
- Функция readlines работает в цикле, пока не будет достигнут конец файла или не будет достигнуто максимальное количество строк.
- В каждой итерации цикла считывается строка с помощью функции getline, выделяется память под строку с помощью функции alloc и добавляется в массив строк.
- Функция qsort сортирует массив строк по умолчанию, сравнивая строки посимвольно.
- Функция wntelines выводит строки на экран в порядке их сортировки.
- Функция getline считывает строку из файла или стандартного ввода и возвращает ее длину.
- Функция alloc выделяет память под строку указанной длины.
- Если память не может быть выделена, то возвращается значение NULL.
- Если выделенная память не может быть записана или прочитана, то возвращается значение -1.
- Значение MAXLINES используется для контроля количества строк, считываемых из файла или стандартного ввода.
- Значение MAXLEN используется для контроля максимальной длины считываемой строки.
- Значение nlines используется для контроля количества строк, которые уже были прочитаны и добавлены в массив.
- Значение p используется для хранения указателя на выделенную память под строку.
- Значение len используется для хранения длины считываемой строки.