Sponsored Content
Top Forums Programming does any one know how to solve? Post 302227569 by shamrock on Thursday 21st of August 2008 01:11:08 PM
Old 08-21-2008
Quote:
Originally Posted by mlhazan
Do you know why for loop does not work?
Don't need a for loop to go through all the record entries...when EOF is reached fread() returns zero for the number of items read and that can be used as a terminal condition.
You don't need to initialize a 1000 element employee[] array when you will be using only a few elements of it. The size of the employee[] array is known completely at compile time using the sizeof operator after the employee[] array has been initialized. See source changes highlighted in red.
Code:
#include <stdio.h>
#include <stdlib.h>

struct date
{
    int month;
    int day;
    int year;
};
struct empRec
{
    char name[25];
    char room[10];
    int jobLevel;
    struct date startDate;
};

int main()
{
    int entries;        /* number of employee records */
    FILE *data;
    static struct empRec employee[] =
    {
        {"Peter North","4B-208",35400,{10,11,1983}},
        {"John Musa","2B-118",25400,{07,10,1993}},
        {"Paula Jeminova","1A-506",18700,{02,1,1990}},
        {"Patricia Silver","6C-123",52100,{14,21,2000}},
        {"Robert mill","4D-318",42100,{01,19,2008}}
    };

    struct empRec employee2;
    entries = (sizeof employee / sizeof employee[0]);

    if ((data = fopen("database","w+")) == NULL) {
        fprintf(stderr,"Can't Create database\n");
        exit(1);
    }
    if (fwrite(&employee,sizeof(struct empRec), entries, data) != entries) {
        fprintf(stderr,"WRITE ERROR\n");
        exit(1);
    }
    rewind(data);

    /* Replace for loop with the while loop below */
    while(fread(&employee2,sizeof(struct empRec), 1, data) == 1)
        printf("%s %s %d %d %d %d\n", employee2.name, employee2.room, employee2.jobLevel,
            employee2.startDate.month, employee2.startDate.day, employee2.startDate.year);

    fclose(data);
    printf("Created database\n");
    exit(0);
}


Last edited by shamrock; 08-21-2008 at 02:23 PM..
 

6 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to solve this

I have to write an script for.. CUST: 123 trans: some contents CUST: 1234 trans: some contents Now wat i have to do is this: CUST:123 akash trans: some contents CUST:1234 akash1 trans: I have been able to add... (3 Replies)
Discussion started by: akashag22
3 Replies

2. Shell Programming and Scripting

Can somebody solve this please

I have to find the files older than 200 days from a path and copy them to some other directory with the current date stamp attached to it. i have written like follows: #!/bin/ksh DSTAMP=$(date +"%y%m%d%H%M") rm $CA_OUT_PATH/ftp_logs/temp touch $CA_OUT_PATH/ftp_logs/temp chmod 777... (1 Reply)
Discussion started by: sreenusola
1 Replies

3. UNIX for Advanced & Expert Users

Can somebody solve this

I have to find the files older than 200 days from a path and copy them to some other directory with the current date stamp attached to it. i have written like follows: #!/bin/ksh DSTAMP=$(date +"%y%m%d%H%M") rm $CA_OUT_PATH/ftp_logs/temp touch $CA_OUT_PATH/ftp_logs/temp chmod 777... (1 Reply)
Discussion started by: sreenusola
1 Replies

4. UNIX for Dummies Questions & Answers

Can somebody solve this

I have to find the files older than 200 days from a path and copy them to some other directory with the current date stamp attached to it. i have written like follows: #!/bin/ksh DSTAMP=$(date +"%y%m%d%H%M") rm $CA_OUT_PATH/ftp_logs/temp touch $CA_OUT_PATH/ftp_logs/temp chmod 777... (13 Replies)
Discussion started by: sreenusola
13 Replies

5. Homework & Coursework Questions

help me to solve it thank you

i thought about to use the commands : wc and sort and mybe more .. i need to write a bash script that recive a list of varuables kaka pele ronaldo beckham zidane messi rivaldo gerrard platini i need the program to print the longest word of the list. word in the output appears on a separate... (1 Reply)
Discussion started by: yairpg
1 Replies

6. UNIX Desktop Questions & Answers

please help me to solve it

i thought about to use the commands : wc and sort cut and mybe more .. i need to write a bash script that recive a list of varuables kaka pele ronaldo beckham zidane messi rivaldo gerrard platini i need the program to print the longest word of the list. word in the output appears on a... (0 Replies)
Discussion started by: yairpg
0 Replies
set_color(1)							       fish							      set_color(1)

NAME
set_color - set_color - set the terminal color set_color - set the terminal color Synopsis set_color [-v --version] [-h --help] [-b --background COLOR] [COLOR] Description Change the foreground and/or background color of the terminal. COLOR is one of black, red, green, brown, yellow, blue, magenta, purple, cyan, white and normal. o -b, --background Set the background color o -c, --print-colors Prints a list of all valid color names o -h, --help Display help message and exit o -o, --bold Set bold or extra bright mode o -u, --underline Set underlined mode o -v, --version Display version and exit Calling set_color normal will set the terminal color to whatever is the default color of the terminal. Some terminals use the --bold escape sequence to switch to a brighter color set. On such terminals, set_color white will result in a grey font color, while set_color --bold white will result in a white font color. Not all terminal emulators support all these features. This is not a bug in set_color but a missing feature in the terminal emulator. set_color uses the terminfo database to look up how to change terminal colors on whatever terminal is in use. Some systems have old and incomplete terminfo databases, and may lack color information for terminals that support it. Download and install the latest version of ncurses and recompile fish against it in order to fix this issue. Version 1.23.1 Sun Jan 8 2012 set_color(1)
All times are GMT -4. The time now is 07:53 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy