Тема: Допоможіть з чергою
Задача стоїть така. Потрібно вивести спочатку назву продукту який є хлібним виробом (буква h), потім молочним (буква m), а потім всі що є. Не можу зрозуміти чому не хоче порівнювати тип продукту з "h", все що введено з клавіатури перекидає в чергу, а з черги незрозуміло куди воно дівається і нічого не друкується :с
Код ось
▼Прихований текст
#include "stdafx.h"
#include "windows.h"
#include "locale.h"
#include "string.h"
typedef struct info
{
char name[10];
char tup[1]; //m- молочний, f- фрукти, o- овочі, h-хлібний виріб
char slovo[15];
struct info *next;
} INFO;
typedef INFO *ptr;
void StvrStruct(INFO *p);
void StvrFILE(FILE *p);
void DrucFILE(FILE *p);
void InsertCherga(ptr *phead, ptr *ptail, char *z);
ptr DelElemV(ptr head);
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL, "RUS");
int k;
char filename[128];
puts("Введiть назву файлу");
//printf("%d", 'h'); // 104
gets(filename);
FILE *fp;
fp=fopen(filename, "w");
if (fp == NULL)
{
puts("Файл не вiдкритий!");
system("pause");
}
StvrFILE(fp);
fp=fopen(filename, "r");
if (fp == NULL)
{
puts("Файл не вiдкритий!");
system("pause");
}
printf("Друк файлу\n");
DrucFILE(fp);
rewind(fp);
ptr head=NULL;
ptr tail=NULL;
INFO z;
puts("Назви хлiбних виробiв");
fread(&z, sizeof(INFO), 1, fp);
while(!feof(fp))
{
if(z.tup == "\104")
printf("%s", z.name);
else
InsertCherga(&head, &tail, z.name);
fread(&z, sizeof(INFO), 1, fp);
}
printf("\n");
puts("Наззви всих iнших виробiв");
while(head != NULL)
{
printf("%s", z.name);
head = DelElemV(head);
}
printf("\n");
fclose(fp);
system("pause");
return 0;
}
//============ СТВОРЕННЯ СТРУКТУРИ ============
void StvrStruct(INFO *p)
{
printf("Введiть назву продукту: ");
gets_s(p->name);
printf("Введiть тип продукту: ");
scanf_s("%c", &(p->tup));
fflush(stdin);
}
//============ СТВОРЕННЯ ФАЙЛУ ============
void StvrFILE(FILE *p)
{
printf("Введiть записи в файл. Остання назва проукту - ENTER\n");
INFO z;
StvrStruct(&z);
while(strcmp(z.name, "\0") != 0)
{
fwrite(&z, sizeof(INFO), 1, p);
StvrStruct(&z);
}
fclose(p);
}
//============ ДРУК ФАЙЛУ ============
void DrucFILE(FILE *p)
{
INFO z;
fread(&z, sizeof(INFO), 1, p);
printf("Назва продукту\tТип продукту\n");
while(!feof(p))
{
printf("%10s%15c\n", z.name, *(z.tup));
fread(&z, sizeof(INFO), 1, p);
}
}
//============ ВСТАВЛЕННЯ В ЧЕРГУ ============
void InsertCherga(ptr *phead, ptr *ptail, char *z)
{
ptr x;
x=(ptr) malloc(sizeof(INFO));
strcpy(x->slovo, z);
x->next= NULL;
if(phead == NULL)
{
*phead = x;
*ptail = x;
}
else
*(ptail)=x;
}
//============ ВИЛУЧЕННЯ З ВЕРШИНИ ============
ptr DelElemV(ptr head)
{
ptr x;
x = head;
head= head->next;
free(x);
return head;
}