Почему после ввода числа, все остальное перестает работать?
Появилась такая проблема, что после ввода числа все что идет после перестает работать. И никаких ошибок. Вот код и на скрине видно где ошибка
#include <stdio.h>
#include <string.h>
const int countWorkers = 1;
const int countProducts = 1;
const int countMagazin = 1;
const int countAllProducts = countProducts*countMagazin;
struct listWorkers{
char surname[20];
char name[20];
char address[20];
char date[20];
};
struct listProducts{
int id;
char name[20];
int price;
int count;
};
struct st_products{
listProducts list[countProducts];
};
struct stMagazin{
int id;
char name[20];
char type[20];
char address[20];
st_products products;
listWorkers workers[countWorkers];
};
void output(struct stMagazin magazin);
void findChar(char [20], char [255]);
void findInt(int,int);
void hr(){
printf("\n----------------------------------------------------------------------------------------\n");
}
int main()
{
struct stMagazin magazin[countMagazin];
for(int j=0;j<countMagazin;j++){
printf("Products: \n");
for(int i=0;i<countProducts;i++){
magazin[j].products.list[i].id = i;
printf("%d)",i+1);
printf("name: ");scanf("%s",magazin[j].products.list[i].name);
printf("price: ");scanf("%d",&magazin[j].products.list[i].price);
printf("count: ");scanf("%d",&magazin[j].products.list[i].count);
}
output(magazin[j]);
}
hr();
printf("Опции: \n");
printf("1) Поиск по-символьному\n");
printf("2) Поиск по-числовому\n");
printf("3) Сортировать элементы структуры в возрастающем порядке\n");
printf("4) Сортировать элементы структуры в убывающем порядке\n");
printf("5) Вывести символьные поля в алфавитном порядке\n");
hr();
while(true){
int n;
scanf("%d",&n);
switch(n){
case 1:{
char symbols[255]; char *str_p;
printf("Ищем символ(ы): "); scanf("%s",symbols);
for(int i=0;i<countMagazin;i++){
findChar(magazin[i].name,symbols);
findChar(magazin[i].type,symbols);
findChar(magazin[i].address,symbols);
for(int j=0;j<countProducts;j++){
findChar(magazin[i].products.list[j].name,symbols);
}
for(int j=0;j<countWorkers;j++){
findChar(magazin[i].workers[j].surname,symbols);
findChar(magazin[i].workers[j].name,symbols);
findChar(magazin[i].workers[j].address,symbols);
findChar(magazin[i].workers[j].date,symbols);
}
}
break;
}
case 2:{
int k;
printf("Ввести искомое число: ");
scanf("%i",&k);
printf("Цикл");
for(int i=0;i<countMagazin;i++){
//printf("Hello\n");
for(int j=0;j<countProducts;j++){
printf("Hello");
findInt(magazin[i].products.list[j].price,k);
findInt(magazin[i].products.list[j].count,k);
}
}
break;
}
case 3:{
break;
}
case 4:{
break;
}
case 5:{
break;
}
}
}
return 0;
}
void output(struct stMagazin magazin){
printf("Products: \n");
for(int i=0;i<countProducts;i++){
printf("%d)",i+1);
printf("Name: %s, ",magazin.products.list[i].name);
printf("Price: %d, ",magazin.products.list[i].price);
printf("Count: %d",magazin.products.list[i].count);
printf("\n");
}
}
void findChar(char myStr[20], char symbols[255]){
char *str_p;
str_p = strstr(myStr,symbols);
if(str_p != NULL){
printf("Совпадение найдено, %s\n",myStr);
}
}
void findInt(int myInt, int k){
printf("%d, %d",myInt,k);
int intNumber, edNumber;
while(myInt!=0){
intNumber = myInt/10;
edNumber = myInt%10;
}
if(intNumber == k || edNumber == k){
printf("Совпадение найдено, %d",myInt);
}
}
Скрин
Ответы (1 шт):
Автор решения: Andrej Levkovitch
→ Ссылка
У вас бесконечный цикл в функции findInt
while (myInt != 0) {
intNumber = myInt / 10;
edNumber = myInt % 10;
}
PS научитесь пользоваться дебаггером
PSS вывода не происходит из-за буферизации: для моментального вывода допишите \n
