0% found this document useful (0 votes)
48 views

C Programming: A Crash Course For C++ Programmers

The document provides an overview of differences and similarities between C and C++ and introduces basic C programming concepts. It discusses that C does not have classes/objects and uses functions instead. I/O in C is based on library functions like printf and scanf. It then covers typical components of a C program like includes, data types, functions, and main(). It provides examples of simple C programs and discusses compiling, running programs, and key C libraries for I/O, strings, and math.

Uploaded by

dayanamite
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
48 views

C Programming: A Crash Course For C++ Programmers

The document provides an overview of differences and similarities between C and C++ and introduces basic C programming concepts. It discusses that C does not have classes/objects and uses functions instead. I/O in C is based on library functions like printf and scanf. It then covers typical components of a C program like includes, data types, functions, and main(). It provides examples of simple C programs and discusses compiling, running programs, and key C libraries for I/O, strings, and math.

Uploaded by

dayanamite
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 13

C Programming

A crash course for C++ programmers

C vs. C++: Differences


C does not have classes/objects!
all code is in functions (subroutines).

C structures can not have methods C I/O is based on library functions:


printf, scanf, fopen, fclose, fread, fwrite,
2

C vs. C++: Differences (cont.)


C does not support any function overloading (you cant have 2 functions with the same name). C does not have new or delete, you use malloc() and free() library functions to handle dynamic memory allocation/deallocation. C does not have reference variables
3

C vs. C++: Similarities


Built-in data types: int, double, char, etc. Preprocessor (handles #include, #define, etc.) Control structures: if, while, do, for, etc. Operators: +
- * / = == != < > += ++

etc.
4

C vs. C++: Similarities (cont.)


There must be a function named main(). function definitions are done the same way. Can split code in to files (object modules) and link modules together.
5

Simple C Program
#include <stdio.h> int main(void) { printf(Hello World\n); return(0); }

Another Program
#include <stdio.h> void printhello(int n) { int i; for (i=0;i<n;i++) printf(Hello World\n); } void main() { printhello(5); }

Typical C Program
includes defines, data type definitions, global variable declarations function definitions main()
#include <stdio.h> #include <stdlib.h> #define MAX 1000 typedef char bigstring[MAX]; char *reverse( char *s) { char buf[MAX]; int i,len; len = strlen(s); printf("reversing %s\n",s); for (i=0;i<len;i++) buf[i] = s[len-i-1]; buf[i]='\0'; strcpy(s,buf); return(s); } void main(int argc,char **argv) { if (argc<2) { printf("Invalid usage - must supply a string\n"); exit(0); } printf("%s\n",reverse(argv[1])); }

A Real C Program
Program that accepts one command line argument. Treats the command line argument as a string, and reverses the letters in the string. Prints out the result (the reversed string).

reverse.c

- part 1

#include <stdio.h> /* printf */ #include <stdlib.h> /* malloc,free */ /* MAX is the size of the largest string we can handle */ #define MAX 1000 /* bigstring is a new data type */ typedef char bigstring[MAX];

10

reverse.c

- part 2

/* reverses a string in place returns a pointer to the string */ char *reverse( char *s) { bigstring buf; int i,len; len = strlen(s); /* find the length */ for (i=0;i<len;i++) buf[i] = s[len-i-1]; buf[i]='\0'; /* null terminate!*/ strcpy(s,buf); /* put back in to s */ return(s); }
11

reverse.c

- part 3

void main(int argc,char **argv) { if (argc<2) { printf("Invalid usage - must supply a string\n"); exit(0); } printf("%s\n",reverse(argv[1])); }

12

Using dynamic allocation


char *reverse( char *s) { char *buf; int i,len; len = strlen(s); /* allocate memory */ buf = malloc(len+1); for (i=0;i<len;i++) buf[i] = s[len-i-1]; buf[i]='\0'; strcpy(s,buf); free(buf); return(s); }
13

Compiling on Unix
Traditionally the name of the C compiler that comes with Unix is cc. We can use the Gnu compiler named gcc.
gcc o reverse reverse.c tells the compiler to create executable file with the name reverse tells the compiler the name of the input file.
14

Running the program


>./reverse hidave evadih >./reverse This is a long string sihT >./reverse This is a long string gnirts gnol a si sihT

15

C Libraries
Standard I/O: printf, scanf, fopen, fread, String functions: strcpy, strspn, strtok, Math: sin, cos, sqrt, exp, abs, pow, log, System Calls: fork, exec, signal, kill,
16

Quick I/O Primer - printf


int printf( const char *, . . . );

. . . means variable number of arguments. The first argument is required (a string). Given a simple string, printf just prints the string (to standard output).
17

Simple printf
printf(Hi Dave I am a string\n); printf(I\thave\ttabs\n); char s[100]; strcpy(s,printf is fun!\n); printf(s);

18

arguing with printf


You can tell printf to embed some values in the string these values are determined at run-time.
printf(here is an integer: %d\n,i);

the %d is replaced by the value of the argument following the string (in this case i).
19

More integer arguments


printf(%d + %d = %d\n,x,y,x+y); for (j=99;j>=0;j--) printf(%d bottles of beer on the wall\n);

printf(%d is my favorite number\n,17);

20

printf is dumb
%d is replaced by the value of the parameter

when treated as a integer. If you give printf something that is not an integer it doesnt know!
printf("Print an int %d\n","Hi Dave"); Print an int 134513884
21

Other formats
%d is a format it means treat the parameter as a

signed integer
%u means unsigned integer %x means print as hexadecimal %s means treat it as a string %c is for characters (char) %f is for floating point numbers %% means print a single %
22

Fun with printf


char *s = "Hi Dave"; printf("The string \"%s\" is %d characters long\n", s,strlen(s)); printf("The square root of 10 is %f\n",sqrt(10));

23

Controlling the output


There are formatting options that you can use to control field width, precision, etc.
printf(The square root of 10 is %20.15f\n,sqrt(10)); The square root of 10 is 3.162277660168380
24

Lining things up
int i; for (i=1;i<5;i++) printf("%2d %f %20.15f\n", i,sqrt(i),sqrt(i)); 1 2 3 4 1.000000 1.414214 1.732051 2.000000 1.000000000000000 1.414213562373095 1.732050807568877 2.000000000000000
25

Alas, we must move on


There are more formats and format options for printf. The man page for printf includes a complete description (any decent C book will also). NOTE: to view the man page for printf you should type the following: man 3 printf
26

Input - scanf
scanf provides input from standard input. scanf is every bit as fun as printf!

scanf is a little scary, you need to use pointers Please NOOOOOOOOOOOO Not Pointers! Actually, you dont really need pointers, just addresses.
27

Remember Memory?
Every C variable is stored in memory. Every memory location has an address. In C you can use variables called pointers to refer to variables by their address in memory.
28

scanf
int scanf(const char *format, ...);

Remember . . . means variable number of arguments (good thing you have a memory). Looks kinda like printf
29

What scanf does


Uses format string to determine what kind of variable(s) it should read. The arguments are the addresses of the variables.
scanf(%d %d,&x,&y);

30

10

A simple example of scanf


float x; printf("Enter a number\n"); scanf("%f",&x); printf("The square root of %f is %f\n,x,sqrt(x));

31

scanf

and strings

Using %s in a scanf string tells scanf to read the next word from input NOT a line of input:
char s[100]; printf("Type in your name\n"); scanf("%s",&s); printf("Your name is %s\n",s);
32

man scanf
Check out the man page for more details.

33

11

Reading a line
You can use the function fgets to read an entire line:
char *fgets(char *s, int size, FILE *stream); size is the maximum # chars FILE is a file handle
34

Using fgets to read from stdin


char s[101]; printf("Type in your name\n"); fgets(s,100,stdin); printf("Your name is %s\n",s);

35

Other I/O stuff


fopen,fclose fscanf, fprintf, fgets fread, fwrite

Check the man pages for the details.


36

12

String functions
char *strcpy(char *dest, const char *src); size_t strlen(const char *s); char *strtok(char *s, const char *delim);
37

Math library
The math library is often provided as a external library (not as part of the standard C library). You must tell the compiler you want the math library:
gcc o myprog myprog.c -lm
means add in the math library
38

13

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy