CS 355 - Systems Programming:
Unix/Linux with C
C Programming Review
Basic structure of a C program
/* This program doesn't do a whole lot */
#include <stdio.h>
int main()
{
printf("Hello, world!\n");
return 0;
}
Useful primitive data types
int x = 0; long y = 1; char c = 'a'; float f = 1.0;
if ( /* condition */ ) {
/* Execute these statements if the condition is TRUE */
}
if ( /* condition */ ) {
/* Execute these statements if the condition is TRUE */
}
else {
/* Execute these statements if the condition is FALSE */
}
Switch/case
switch ( /* expression */ ) {
case /* value 1 */ :
/* Code 1 */
break;
case /* value 2 */ :
/* Code 2 */
break;
case /* value N */ :
/* Code N */
break;
default:
/* Code */
break;
}
Loops
for ( /* variable initialization */ ;
/* condition */ ;
/* variable update */ ) {
/* Code to execute while the condition is true */
}
do {
/* Code to execute while the condition is true */
} while ( /* condition */ );
while ( /* condition */ ) {
/* Code to execute while the condition is true */
}
/* general format */ return_type function_name ( arg_type arg1, ..., arg_type argN );
/* prototype of a function */
int product (int, int);
int main() {
int iA = 1, iB = 2;
int iC = product(iA, iB);
}
/* implementation of a function */
int product(int iArg1, int iArg2) {
return iArg1 * iArg2;
}
/* general syntax */ variable_type *pointer_name; int *piIntegerPointer; int *piPtr1, *piPtr2; int *piPointer, iNonPointer;
#include <stdio.h>
int main(){
int iInt;
int *piPtr;
piPtr = &iInt; /* get the address of... */
scanf("%d", &iInt); /* get the address of... */
printf("%d\n", *piPtr); /* dereference the pointer */
}
#include <stdlib.h> float *pfPtr = malloc(sizeof(pfPtr)); /* use pfPtr ... */ free(pfPtr);
Arrays
int iaNumbers[100];
int i;
for(i=0; i<100; i++)
printf("iaNumbers[%d] = %d\n", i, iaNumbers[i]);
char cTmp[100] = "Hello, world!";
char *cpString;
cpString = cTmp;
printf("%s", cpString); /* print the entire string */
char *p; /* print the entire string, one char at a time */
for(p=cpString; p!=0; p++)
printf("%c", *p);
struct database {
int iID;
int iAge;
float fSalary;
};
int main()
{
struct database employee;
employee.iAge = 22;
employee.iID = 1;
employee.fSalary = 12000.21;
struct database *ptr;
ptr = &employee;
printf("%d\n", ptr->iAge);
}
Working with command line parameters
#include <stdio.h>
int main(int ac, char *av[])
{
int i;
for(i=0; i<ac; i++)
printf("Parameter %d: %s\n", i, av[i]);
return 0;
}