11.07.2014 Views

C programming notes - School of Physics

C programming notes - School of Physics

C programming notes - School of Physics

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

C <strong>programming</strong> <strong>notes</strong><br />

file:///F:/my_docs/web_phys2020/C<strong>programming</strong><strong>notes</strong>.html<br />

34 <strong>of</strong> 40 19/03/2007 10:06 AM<br />

int fread(void *ptr, int size, int nelm, FILE *fp) Reads nelm elements<br />

<strong>of</strong> data, each size bytes long, storing them<br />

at the location pointed to by ptr. Returns<br />

the number <strong>of</strong> elements read.<br />

int fwrite(void *ptr, int size, int nelm, FILE *fp) Writes nelm elements<br />

<strong>of</strong> data, each size bytes long, from the<br />

location pointed to by ptr. Returns<br />

the number <strong>of</strong> elements written.<br />

int getc(FILE *fp)<br />

Returns the next character from `fp', or<br />

EOF on error or end-<strong>of</strong>-file.<br />

int putc(int c, FILE *fp)<br />

Write the character c to the file `fp',<br />

returning the character written, or EOF on<br />

error.<br />

int fscanf(FILE *fp, char *format, ...) Like scanf, except input is taken<br />

from the file fp.<br />

int fprintf(FILE *fp, char *format, ...) Like printf, except output is written<br />

to the file fp.<br />

char *fgets(char *line, int n, FILE *fp) Gets the next line <strong>of</strong> input from the<br />

file fp, up to `n-1' characters in length.<br />

The newline character is included at the end<br />

<strong>of</strong> the string, and a null is appended. Returns<br />

`line' if successful, else NULL if end-<strong>of</strong>-file<br />

or other error.<br />

int fputs(char *line, FILE *fp) Outputs the string `line' to the file fp.<br />

Returns zero is successful, EOF if not.<br />

When you have finished with a file, you should close it with 'fclose':<br />

int fclose(FILE *fp)<br />

Closes the file 'fp', after flushing any<br />

buffers. This function is automatically called<br />

for any open files by the operating<br />

system at the end <strong>of</strong> a program.<br />

It can also be useful to flush any buffers associated with a file, to guarantee that the characters that you have written<br />

have actually been sent to the file:<br />

int fflush(FILE *fp)<br />

Flushes any buffers associated with the<br />

file 'fp'.<br />

To check the status <strong>of</strong> a file, the following functions can be called:<br />

int fe<strong>of</strong>(FILE *fp)<br />

int ferror(FILE *fp)<br />

void clearerr(FILE *fp)<br />

int fileno(FILE *fp)<br />

Returns non-zero when an end-<strong>of</strong>-file is read.<br />

Returns non-zero when an error has occurred,<br />

unless cleared by clearerr.<br />

Resets the error and end-<strong>of</strong>-file statuses.<br />

Returns the integer file descriptor associated<br />

with the file (useful for low-level I/O).<br />

Note that the above "functions" are actually defined as pre-processor macros in C. This is quite a common thing to do.<br />

The preprocessor, cpp<br />

Any line in your C source code that starts with the "#" (hash) chararacter is a preprocessor directive. Here are some<br />

examples <strong>of</strong> what is possible:<br />

#define PI 3.1415926535<br />

#define SQR(a) (sqrarg=(a),sqrarg*sqrarg)<br />

#include "filename" /* from the current directory */<br />

#include /* from the system directories (as modified by the "-I" switch) */<br />

#define DEBUG

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!