Scanf работает через раз - C (СИ) (79980)
Формулировка задачи:
Подскажите, почему в 42 строчке scanf пропускается?
Вот вывод программы
#include <stdio.h>
#include <stdlib.h> /* для rand(), srand() */
#include <time.h> /* для time() */
#define TRUE 1
#define SIZE 4
char *pGood[SIZE] = {"Очень хорошо!\n", "Превосходно!\n",
"Отличная работа!\n", "Продолжайте в том же духе!\n"};
char *pBad[SIZE] = {"Нет. Пожалуйста пробуйте снова.\n",
"Неправильно. Попытайтесь ещё раз.\n", "Не сдавайтесь!\n",
"Нет. Продолжайте пробывать\n"};
int main(void)
{
int var1, var2; /* для хранения двух случайных чисел */
int result, tmp;
char x = 'Y';
srand(time(NULL)); /* засееваем генератор чисел */
while(TRUE)
{
var1 = 1 + rand() % 9;
var2 = 1 + rand() % 9;
while(TRUE)
{
printf("Сколько будет %d умножить на %d?\n", var1, var2);
scanf("%d", &result);
if(var1 * var2 == result)
{
tmp = rand() % SIZE;
printf("%s", pGood[tmp]);
break;
}
else
{
tmp = rand() % SIZE;
printf("%s", pBad[tmp]);
}
} /* конец while(TRUE) */
printf("Ещё? [Y/n]");
scanf("%c", &x);
switch (x)
{
case 'Y':
case 'y':
break;
case 'N':
case 'n':
return 0; /* выход из программы */
default:
printf("Недопустимое значение\nВыход из программы...");
return 0;
} /* конец switch */
}/* конец while(TRUE) */
return 0;
}Сколько будет 5 умножить на 9? 45 Продолжайте в том же духе! Ещё? [Y/n]Недопустимое значение Выход из программы...
Решение задачи: «Scanf работает через раз»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
int main()
{
char str[64] = "hello";
strcpy(str, strchr(str, '1'));
printf("%s\n", str);
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами и строками
- Объявление переменной типа int с именем main и пустой функцией
- Объявление массива символов (строки) типа char с именем str и инициализация его значением
hello - Копирование значения из строки, на которую указывает символ '1' в строку str с помощью функции strcpy
- Вывод значения переменной str с помощью функции printf
- Возвращение 0 из функции main, что означает успешный конец работы программы