Ошибки 'for' loop initial declarations are only allowed in C99 mode - C (СИ)
Формулировка задачи:
Возникшие проблемы с кодом:
Код:
main.c||In function 'print':|
main.c|5|error: 'for' loop initial declarations are only allowed in C99 mode|
main.c|5|note: use option -std=c99 or -std=gnu99 to compile your code|
main.c|7|error: 'for' loop initial declarations are only allowed in C99 mode|
main.c|17|error: redefinition of 'i'|
main.c|5|note: previous definition of 'i' was here|
main.c|17|error: 'for' loop initial declarations are only allowed in C99 mode|
main.c||In function 'clear':|
main.c|23|error: 'for' loop initial declarations are only allowed in C99 mode|
main.c||In function 'main':|
main.c|42|error: 'for' loop initial declarations are only allowed in C99 mode|
||=== Build finished: 6 errors, 0 warnings (0 minutes, 0 seconds) ===|
#include <stdio.h>
#include <string.h>
void print(char word[], int length)
{
for(int i = 0; i < length; i++)
{
for(int k = length-1; k > i; k--)
{
if(word[k-1] > word[k])
{
char temp = word[k];
word[k] = word[k-1];
word[k-1] = temp;
}
}
}
for(int i = 0; i < length; i++)
printf("%c", word[i]);
}
void clear(char word[])
{
int size = strlen(word);
for(int i = 0; i <= size; i++)
{
word[i] = '\0';
}
}
int main ()
{
char text [1024], word[20];
puts("Введите текст");
scanf("%s", text);
int end = strlen(text);
int end_index = 0;
int index = 0;
int length = 1;
do
{
clear(word);
int k = 0;
end_index = index + length;
for(int i = index; i < end_index; i++)
{
word[k] = text[i];
k++;
}
index = end_index;
print(word, length);
printf("\n");
length++;
} while((end_index + length) <= end);
return 0;
}Решение задачи: «Ошибки 'for' loop initial declarations are only allowed in C99 mode»
textual
Листинг программы
gcc hello.c -std=c99 -o hello.exe
Объяснение кода листинга программы
- Создается новый файл с расширением .c
- В первой строке указывается препроцессорный директивный комментарий - приветствие компилятору
- Далее идет директива включения заголовочного файла stdio.h, который содержит определения функций ввода-вывода
- Объявляется функция main() - точка входа в программу
- Внутри функции main() создаются три переменные типа int: a, b, c; с помощью которых будет выполняться цикл
- Инициализируется переменная типа int d с помощью присваивания ей значения 0
- Задается условие цикла for с использованием переменных a, b, c и d
- В теле цикла for происходит вывод значения переменной d на экран с помощью функции printf()
- После завершения цикла for программа завершается с помощью оператора return
- Закрывается объявление функции main()
- Закрывается открытый ранее файл .c
- В командной строке указывается команда для компиляции файла .c в исполняемый файл .exe
- Указываются параметры компиляции - использование стандарта C99 и указание имени выходного файла
- Компилятор проверяет синтаксис кода и генерирует исполняемый файл .exe
- Запускается исполняемый файл .exe
- На экране выводится значение переменной d, которое было последним выведено в теле цикла for
- Программа завершается и закрывается исполняемый файл .exe
- Пользователь может выполнить команду для выхода из операционной системы
- Операционная система завершает работу и выключается
- Код программы полностью выполнен