Неправильная работа цикла while, но не могу понять в чем заключается проблема
#include <stdio.h>
#include <stdlib.h>
#define _CRT_SECURE_NO_WARNINGS
int main ()
{
FILE *number, *definition;
int x, y;
printf ("Enter the definition number :");
scanf ("%d", &x);
number = fopen ("number.txt", "wt");
fprintf (number, "%d", x);
fclose (number);
number = fopen ("number.txt", "r");
definition = fopen ("definition.txt", "w");
fscanf (number, "%d", &y);
printf ("%d\n", y);
fclose (number);
fprintf (definition, "%d\n", y);
fclose (definition);
scanf ("%d", &y);
while (1)
{
if (y == 1)
printf("CPU is an electronic unit or an integrated circuit that executes machine instructions, the main part of the hardware of a computer or a programmable logic controller.");
if (y == 2)
printf("RAM is in most cases an energy-dependent part of a computer memory system, in which the executed machine code is stored during computer operation.");
if (y == 3)
printf("A motherboard is a printed circuit board that is the basis for building a modular electronic device, for example, a computer.");
}
return 0;
}
Пробовал разные варианты, через goto, ставил/убирал фигурные скобки и т.д.
Ошибка заключается в том, что при вводе в консоль например, значение 1, код "съедает" это значение, а если потом ввести еще раз 1, то они складываются и выводится if( y == 2 ), при чем бесконечное кол-во раз.(Сразу прошу прощения,за то как оформлен мой код тут, не совсем понимаю как надо его оформлять)
Ответы (1 шт):
Ну программа у вас и запрограммирована так, как вы описали.
Всего вы вводите с клавиатуры 2 значения - x и y. Между ними - самодостаточная работа с файлами, которая не требует реакции от пользователя. И да, после того, как вы ввели x, вы ничего с ним не делаете.
int main ()
{
....
scanf ("%d", &x);
....
scanf ("%d", &y);
....
А потом у вас стоит "вечный" цикл while(1). Вы ведь не сделали никакого условия для выхода из цикла. Если второе значение - y равно 1,2 или 3 - то цикл будет вечно печатать одну из строчек. А если y равен другому числу - то цикл будет работать вечно и ничего не печатать.
scanf ("%d", &y);
while (1)
{
if (y == 1)
printf("CPU is an ....");
if (y == 2)
printf("RAM is ....");
if (y == 3)
printf("A motherboard is a ....");
}
Так что цикл у вас работает правильно!
А как по-вашему программа должна работать?