[Error] name lookup of 'i' changed for ISO 'for' scoping [-fpermissive - C (СИ)
Формулировка задачи:
[Error] name lookup of 'i' changed for ISO 'for' scoping [-fpermissive] При замене не отображает два столбца ,а те что отображает - некорректно
}
Решение задачи: «[Error] name lookup of 'i' changed for ISO 'for' scoping [-fpermissive»
textual
Листинг программы
#include<stdio.h></stdio.h>
#include<limits.h></limits.h>
#define STRLEN 10
#define ARRSIZE 10
typedef struct orgt {
char n[STRLEN];
char Firm[STRLEN];
char Model[STRLEN];
float price;
} orgt_t;
void clearbuf()
{
if (!feof(stdin))
while (getchar() != '\n');
}
int main ()
{
orgt_t s[ARRSIZE];
printf("You start table filing!\n");
int i = 0;
for(; i < ARRSIZE; i++) {
printf("Enter NAME: ");
scanf("%9s", s[i].n);
clearbuf();
printf("Enter Firm: ");
scanf("%9s", s[i].Firm);
clearbuf();
printf("Enter Model name: ");
scanf("%9s", s[i].Model);
clearbuf();
printf("Enter price of item: ");
scanf("%f", &s[i].price);
clearbuf();
printf("Countine? 1 - Yes 0 - No\n");
int choice;
scanf("%d", &choice);
if(!choice) break;
clearbuf();
}
printf("Table:\n");
printf("-------------------------------------\n");
printf("Names Firm Model price\n");
printf("-------------------------------------\n");
for(int j=0; j <= i; j++) {
printf("%-10.9s%-10.9s%-10.9s%-10.2f\n",
s[j].n, s[j].Firm, s[j].Model, (double)s[j].price);
}
printf("-------------------------------------\n");
return 0;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы:
для работы с вводом/выводом, для определения максимального размера строки. - Определяем константы: STRLEN - максимальная длина строки, ARRSIZE - количество элементов в массиве.
- Создаем структуру orgt_t для хранения данных об организации.
- Создаем функцию clearbuf(), которая очищает буфер ввода.
- В функции main() создаем массив s[ARRSIZE] типа orgt_t для хранения данных.
- Выводим сообщение о начале заполнения таблицы.
- Вводим переменную i для итерации по массиву.
- Используем цикл for для заполнения структуры s[i] данными, которые вводит пользователь.
- После заполнения структуры, выводим сообщение
Tableи таблицу с данными, используя цикл for для перебора элементов массива s[]. - Возвращаем 0, чтобы указать, что программа успешно завершилась.