Homework Exam - PowerPoint PPT Presentation

About This Presentation
Title:

Homework Exam

Description:

Homework Exam – PowerPoint PPT presentation

Number of Views:52
Avg rating:3.0/5.0
Slides: 22
Provided by: bobwi9
Learn more at: https://www.cs.umb.edu
Category:

less

Transcript and Presenter's Notes

Title: Homework Exam


1
Homework / Exam
  • HW7 due class 25
  • Exam 3 - class 26
  • Open Book, Open Notes
  • Covers up through end of KR 7
  • and Appendix B Standard Library
  • Plus UNIX Shells / Processes / Shell Scripts

2
Line Input and Output, KR 7.7
  • The standard C library equivalents to getline and
    putline fgets and fputs
  • Function fgets like getline() from a file
  • char fgets(char line, int maxline, FILE fp)
  • Reads the next input line (including '\n' at the
    end) from file fp into the char array line
  • at most maxline-1 chars will be read
  • then a terminal '\0' will be added.
  • Returns ptr to line or NULL (means EOF)

3
Line Input and Output
  • / sample code to understand fgets similar to
    getline /
  • char fgets(char s, int n, FILE iop)
  • register int c
  • register char cs
  • cs s
  • while (--n gt0 (c getc(iop)) ! EOF))
  • if ((cs c) '\n')
  • break
  • cs '\0''
  • return (c EOF cs s) ? NULL s

4
Line Input and Output
  • Function fputs writes line to fp
  • int fputs(char line, FILE fp)
  • It returns EOF if error occurs (disk fills up?)
    otherwise it returns zero
  • Can use perror to print out exact error cause (to
    stderr, not user screen)

5
Miscellaneous Functions, KR 7.8
  • Look at pg. 251-253 where they are covered
  • 7.8.1 String Operations (string.h)
  • Used many of these already
  • Examples
  • size_t strlen(const char s)
  • int strcmp(const char s, const char t)
  • char strcpy(char s, const char t)
  • char strncpy(char s, const char t, size_t n)

6
Miscellaneous functions
  • 7.8.2 Character Processing Functions (ctype.h)
  • Used at least one of these already
  • Examples
  • int isalnum(int c)
  • int isalpha (int c)
  • int isdigit (int c)
  • int isxdigit (int c)
  • int isspace (int c)
  • int tolower (int c)
  • int toupper (int c)

7
Miscellaneous functions
  • 7.8.3 Ungetc (stdio.h)
  • Had something like this in homework, ungetch()
  • Only have guarantee that you can push one char
    back, but that is usually enough in practice
  • Example
  • int c getc (stdin) / expecting an alpha
    character /
  • if (!isalpha(c))
  • ungetc (c, stdin) / if not alpha -
    return it /

8
Miscellaneous functions
  • 7.8 4 Command Execution (stdlib.h)
  • The function system() See pg 253
  • int system(const char s)
  • The string s contains a UNIX system command
  • system(pwd)
  • system(ls gtfname)
  • system(prog)
  • Return value depends on the command executed
  • Learn that from man page for the command

9
Miscellaneous functions
  • In program compiled as prog, determine values for
    a and b through argc and argv
  • int a, b char commandMAXCMD
  • sprintf(command, "prog d d gt prog.out", a, b)
  • system(command)
  • System call doesn't return data from the command,
    but by writing gt prog.out it creates an output
    file
  • Calling program can then open/read prog.out file

10
Miscellaneous Functions
  • 7.8.5 Storage Management (stdlib.h)
  • malloc() andfree()
  • Review Why is this incorrect?
  • for (p head p ! NULL p p-gtnext)
  • free(p)
  • Review Why must it be written like this?
  • for (p head p ! NULL p q)
  • q p-gtnext
  • free(p)

11
Miscellaneous Functions
  • 7.8.6 Math functions (math.h)
  • Need to use include ltmath.hgt in source code
  • And use math library flag in execution of gcc
  • gcc -lm source.c
  • See list in appendix, mostly familiar!
  • Examples
  • double pow (double x, double y) / Not xy
    /

12
Miscellaneous Functions
  • 7.8.7 Random number functions (stdlib.h)
  • Two functions
  • rand (void)
  • srand (unsigned int seed) / default value is 1
    /

13
qsort
  • Library function qsort prototype (stdlib.h)
  • void qsort(void base, size_t n, size_t size,
  • int (cmp) (const void , const
    void ))
  • It sorts an array of data using quick sort
    algorithm
  • base a pointer to the table (an array of unknown
    type data)
  • n the number of elements in the table
  • size the size of each element
  • Whats the last argument?
  • A pointer to a compare function for specific data
    type
  • NOT the same function as qsort in KR, pg 120

14
bsearch
  • Library function bsearch prototype (stdlib.h)
  • void bsearch(const void key, const void base,
  • size_t n, size_t size,
  • int (cmp) (const void , const void ))
  • It searches for element containing key in an
    array of data of unknown that is already sorted
    in ascending order
  • Returns
  • pointer to element (if found) or
  • NULL (if not found)
  • Last argument is a pointer to the compare
    function
  • Should use same compare function as was used for
    sorting

15
qsort and bsearch
  • qsort and bsearch dont understand the data type
    for the elements of the table that it sorts or
    searches
  • How can we tell that?
  • key (for bsearch only) is a type void
  • base (the pointer to the table for both) is a
    type void
  • size (the size of each element for both) is
    provided
  • Last argument is a pointer to the correct compare
    function with a cast of the argument list
    variables to void

16
Example qsort and bsearch
  • / compare function for integers lowest to
    highest, we pass a pointer to this function to
    qsort/bsearch /
  • int intcompare(int i, int j)
  • return (i - j)

17
Example qsort and bsearch
  • main ()
  • int i, ip, kp, a 10 8, 2, 9, 6, 5, 1, 3,
    7, 4, 0
  • qsort ( (void ) a, sizeof a/sizeof (int),
    sizeof(int),
  • (int () (void , void )) intcompare)
  • for (i 0 i lt 10 i)
  • printf(d, , ai)
  • / prints 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
    /

18
Example qsort and bsearch
  • kp a3
  • ip (int ) bsearch ( (void ) kp, (void )
    a, sizeof a/sizeof (int), sizeof(int),
  • (int () (void , void )) intcompare)
  • if (ip ! NULL) / ip will be a3 /
  • printf(found d\n, ip)
  • / prints found 3 /

19
UNIX Time Representation
  • UNIX time is kept as a signed int representing
    the number of seconds from Jan 1, 1970 UTC
  • That date is referred to as the UNIX epoch
  • Earliest representable date 12/13/1901
  • Latest representable date 01/18/2038
  • UNIX will have a Y2.038K problem!

20
UNIX Time Representation
  • clock_t / elapsed processor time /
  • time_t / calendar time /
  • struct tm / calendar time components /
  • int tm_sec
  • int tm_min
  • int tm_hour
  • int tm_mday
  • int tm_mon
  • int tm_year
  • . . .

21
UNIX Time Representation
  • Time functions (time.h)
  • clock_t clock(void) / returns processor
    time /
  • time_t time (time_t tp) / returns current time
    /
  • double diff_time(time_t time2, time_t time1)
  • / returns time difference in seconds /
  • struct tm gmtime(const time_t tp)
  • / returns tp as UTC struct tm /
  • struct tm localtime(const time_t tp)
  • / returns tp as local time struct tm /
  • char asctime(const struct tm tp)
  • / returns a string representing tp, e.g.
  • Sun Jan 3 130842 1988\n\0 /
Write a Comment
User Comments (0)
About PowerShow.com