Mám program napsaný v jazyku C a potřeboval bych pomoc s finálními upravami.Pomohl by mi někdo s ošetřením vstupu a testováním hodnot vstupů,alokaci paměti,zda ukládaný soubor nepřepisuje jiný,test hodnot vstup. parametrů ,prosím,pomožte mi!už mi jedna dobrá duše pomohla ale nestačila vše.Prosím,pomožte mi někdo,co nejdříve se ozvěte!Děkuji MOC!
Moje ICQ:
283-039-147
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define MAXBUF 255
typedef struct bed { /*definovani struktury*/
char *name;
char *surname;
char food;
struct bed *next;
} BED;
void vlozit(BED **head) { /*head - pointer na pointer na prvni zaznam*/
BED *newbed = (BED *)malloc(sizeof(BED)); /*alokuje pamet pro novy zaznam*/
char tmp[MAXBUF]; /*pole charu o velikosti MAXBUF*/
BED *akt; /*pointer namiren na aktualni zaznam*/
akt= *head;
fflush(stdin); /*vycisti buffer*/
printf("Jmeno hosta?: ");
gets(tmp);
newbed->name = (char *)malloc(strlen(tmp) * sizeof(char) + 1); /*alokuje pamet pro zaznam jmeno,pointer na char,alokuje se podle jeho delky-strlen plus ukoncovaci znak*/
strcpy(newbed->name, tmp);
if (newbed->name == NULL) { /*test volne pameti*/
printf("Malo Pameti/n");
exit(1);
}
printf("Prijmeni hosta?: ");
gets(tmp); /*stejne jako predesly pripad jen pro dalsi zaznam prijmeni*/
newbed->surname = (char *)malloc(strlen(tmp) * sizeof(char) + 1);
strcpy(newbed->surname, tmp);
if (newbed->surname == NULL) { /*test volne pameti*/
printf("Malo Pameti/n");
exit(1);
}
printf("Zpusob stravovani?(snidane-s, polopenze-o, plna penze-p: ");
newbed->food = getchar();
newbed->next = NULL; /*dulezite, sluzi jako zarazka*/
if (akt == NULL) { /*pokud aktualni zaznam vrati NULL,pointer se namiri na novou strukturu*/
*head = newbed;
} else {
while (akt->next != NULL)
akt = akt->next;
akt = akt->next = newbed;
}
}
void del(BED *akt) { /*funkce del uvolni pamet kterou zabiral zaznam.pamet,kterou si alokoval,musi se uvolnit*/
free((void *)akt->name);
free((void *)akt->surname);
free((void *)akt);
}
void odhlas(BED **head) {
char str[MAXBUF];
BED *akt = *head, *pred = NULL;
fflush(stdin);
printf("Zadejte jmeno: ");
gets(str);
while (akt != NULL && strcmp(str, akt->name)) {
pred = akt; /*odlozi zaznam jako predesly*/
akt = akt->next;
}
if (akt == NULL) { /*testovani pokud by nenasel zadny zaznam*/
printf("Zaznam sa nenasel");
getch();
return;
}
if (pred == NULL) { /*maze sa prvni zaznam */
*head = akt->next; /*zmena pointeru na prvni zaznam*/
del(akt);
return;
}
pred->next = akt->next;
del(akt);
}
void smaz(BED *akt) {
if (akt != NULL) {
smaz(akt->next);
del(akt);
}
}
void ulozenie (FILE *out, BED *head) {
BED *akt = head;
while (akt != NULL) {
fprintf(out, akt->name); fprintf(out, "\n");
fprintf(out, akt->surname); fprintf(out, "\n");
fprintf(out, &akt->food); fprintf(out, "\n");
akt = akt->next;
}
fflush(out); /*zapiseme*/
}
void nacitanie(FILE *in, BED **head) {
char temp[MAXBUF];
BED* tmpbed;
BED *akt;
akt = (*head) = (BED*)malloc(sizeof(BED));
fscanf(in, "%s", temp);
(*head)->name = (char*)malloc(strlen(temp) + 1);
strcpy((*head)->name, temp);
fscanf(in, "%s", temp);
(*head)->surname = (char*)malloc(strlen(temp) + 1);
strcpy((*head)->surname, temp);
fscanf(in, "%s", &(*head)->food);
(*head)->next = NULL;
while(fscanf(in, "%s", temp) != EOF) {
tmpbed = (BED*)malloc(sizeof(BED));
tmpbed->name = (char*)malloc(strlen(temp) * sizeof(char) + 1);
strcpy(tmpbed->name, temp);
fscanf(in, "%s", temp);
tmpbed->surname = (char*)malloc(strlen(temp) * sizeof(char) + 1);
strcpy(tmpbed->surname, temp);
fscanf(in, "%s", &(tmpbed->food));
tmpbed->next = NULL;
akt->next = tmpbed;
akt = akt->next;
}
}
void vypis(BED *akt) { /*slouzi pro vypsani vsech zaznamu*/
while(akt != NULL) {
printf("%s\n", akt->name);
printf("%s\n", akt->surname);
printf("%c\n\n", akt->food);
akt = akt->next;
}
getch(); /*ceka na uzivatele*/
}
void main() {
char c;
BED *head = NULL, *list = NULL;
FILE *file = fopen("hoste.txt", "a+");
clrscr();
nacitanie(file, &head); /*nacte zaznamy*/
do {
system("cls"); /*menu pro komunikaci*/
printf("1. ubytovani\n");
printf("2. odhlaseni\n");
printf("3. vypis\n");
printf("4. konec\n");
switch(c = getch()) {
case '1': vlozit(&head); break;
case '2': odhlas(&head); break;
case '3': vypis(head); break;
}
} while (c != '4');
ulozenie(file, head); /*ulozi do souboru*/
fclose(file); /*zavre soubor*/
smaz(head);
}
- Obsah fóra Software Programování a web
- Hledat
-
- Právě je ned 31. kvě 2026, 01:03
- Všechny časy jsou v UTC+02:00
Prosím,pomohl by mi někdo s Céčkem?
Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
- Martin236
- Nováček

-
- Registrován: 21. kvě 2006
Přejít na
- PCtuning a toto fórum
- ↳ PCtuning - webový magazín
- ↳ Zprávy od a pro administrátory
- Hardware
- ↳ Procesory
- ↳ Rady s nákupem a porovnání
- ↳ Procesory AMD
- ↳ Procesory Intel
- ↳ Ostatní procesory
- ↳ Základní desky
- ↳ Rady s nákupem a porovnání
- ↳ Socket V a V1 (LGA1700 a LGA1851)
- ↳ Socket AM5
- ↳ Socket H1 až H5, B a R (LGA 1150/1/5/6, 1200, 1366, 2011 a 2066)
- ↳ Asus
- ↳ ASRock a MSI
- ↳ Socket 423, 478, 479, J a T
- ↳ Asus
- ↳ ASRock a Gigabyte
- ↳ Socket AM1 až AM4, FM1 až FM2+
- ↳ Asus a MSI
- ↳ ASRock a Gigabyte
- ↳ Socket 754, 939 a 940
- ↳ Socket A a Slot A
- ↳ Ostatní
- ↳ Ovladače a BIOSy
- ↳ Socket FM1 až FM2+
- ↳ Grafické karty
- ↳ Rady s nákupem a porovnání
- ↳ AMD/ATI grafické karty
- ↳ NVIDIA grafické karty
- ↳ Ostatní grafické karty
- ↳ Ovladače a BIOSy
- ↳ Paměti
- ↳ DDR5
- ↳ DDR4
- ↳ DDR3
- ↳ DDR1, DDR2 a ostatní
- ↳ Paměťové karty a čtečky
- ↳ Disky, mechaniky a řadiče
- ↳ SSD a flash disky
- ↳ Optická, výměnná a jiná zařízení
- ↳ Sítě, modemy a Internet
- ↳ Bezdrátové sítě
- ↳ Zvuk
- ↳ Rady s nákupem a porovnání
- ↳ Ovladače
- Ostatní hardware
- ↳ Počítačové sestavy
- ↳ Problémy s PC sestavami
- ↳ HTPC a mini-ITX
- ↳ Notebooky a netbooky
- ↳ Rady s výběrem a porovnání
- ↳ Mobilní zařízení, el. čtečky a tablety
- ↳ Tablety
- ↳ Mobilní telefony a PDA/MDA
- ↳ Digitální foto a video
- ↳ Monitory, televizory a projektory
- ↳ Projektory
- ↳ Ostatní hardware
- ↳ Počítačové a záložní zdroje
- ↳ Tiskárny, skenery a multifunkční zařízení
- ↳ Počítačové skříně
- ↳ Vstupní zařízení
- Chlazení a úpravy
- ↳ Modifikace hardware
- ↳ Casemodding
- ↳ Projekty
- ↳ Chladiče a chlazení
- ↳ Vzduch
- ↳ Voda
- ↳ Ostatní metody chlazení
- Operační systémy
- ↳ Operační systémy Microsoft
- ↳ Windows 11
- ↳ Windows 10
- ↳ Windows 8 a 8.1
- ↳ Windows 7
- ↳ Windows Vista
- ↳ Windows XP, 2000, NT
- ↳ Windows ME, 98, starší a DOS
- ↳ Windows Server a ostatní
- ↳ Operační systémy Linux a podobné
- Software
- ↳ Audio, video a grafika
- ↳ Benchmarky a diagnostické programy
- ↳ Výsledkové listiny
- ↳ Hry a zábava
- ↳ Programování a web
- ↳ Ostatní programy
- ↳ Vypalovací software
- ↳ Viry, antiviry a bezpečnost
- Ostatní
- ↳ Reklamace a zákony
- ↳ Společenská sekce